二进制到base10的java,带有main方法和TWO类/方法(boolean和



我是一名初级程序员。这就是我到目前为止所拥有的。这个问题的方向有点难。以下是我正在努力实现的目标。。

您将编写一个程序,将二进制数转换为基数为10的数字。这个程序将要求用户输入一个二进制数字。您必须验证用户输入的内容只有0和1。在用户输入字母的情况下,您必须不断要求用户输入另一个字母。当输入有效时,您将把二进制数转换为以10为基数的数字。请使用A2.zip文件中提供的Question1.java文件。

有效输入-为了检查输入是否有效,程序应该调用CheckInputCorrect方法,该方法将String作为输入参数并返回布尔值。如果输入字符串对应于二进制表示中的数字,则认为它是有效的。更具体地说,在CheckInputCorrect方法中,您应该扫描此字符串以确保它只包含"0"或"1"个字符。一旦找到不是"0"或"1"的字符,该方法就会返回false。如果该方法到达输入字符串的末尾(即所有字符都是"0"或"1"),则该方法应返回true。

Converter-在这一点上,我们假设输入字符串是有效的(使用CheckInputCorrect方法进行检查)。要将输入从二进制转换为基数10,必须实现BinaryToNumber方法。BinaryToNumber方法应将String作为参数,并返回一个整数,该整数对应于以10为基数的转换值。二进制转换的工作方式如下。对于二进制数中的每个数字,如果数字为"1",则应将相应的十进制值(最右边的数字为20,左边的下一个数字为21,下一个为22,依此类推)添加到一个变量中,该变量将保存要返回的最终结果。这可以通过使用循环轻松完成。

1) 我走的路对吗?2) 我不知道自己在做什么,需要你帮我弄清楚。。。。

更新1:

当我运行这个vvvv时:它说:"请输入一个二进制数字让我转换:然后输入一个地方让我输入答案,但无论我放什么,它都会返回另一个框让我输入,但停止并没有评估任何内容。

import java.util.Scanner;
public class Question1
{
  public static void main(String[] args)
  {
    System.out.println("Please enter a binary number for me to convert to decimal: ");   
    Scanner inputKeyboard = new Scanner(System.in);
    String inputUser = inputKeyboard.nextLine();          
    boolean BinaryNumber = false;
    String inputString = "";
    while (!BinaryNumber){
      inputString = inputKeyboard.next();
      BinaryNumber = CheckInputCorrect(inputString);
      System.out.println("You have given me a " + BinaryNumber + "string of binary numbers.");
    }
    int finalNumber = BinaryToNumber(inputString);
    System.out.println("Congratulations, your binary number is " + finalNumber + ".");

  }
  public static boolean CheckInputCorrect(String input)
  {
    for (int i = 0; i < input.length(); i++)
    {
      while (i < input.length());
      if (input.charAt(i) != '0' && input.charAt(i) != '1')
      {return false;}
      i++;
    }
    return true;
  }
  public static int BinaryToNumber(String numberInput)
  {
    int total = 0;
    for (int i = 0; i < numberInput.length(); i++){
      if (numberInput.charAt(i)=='1')
      {
        total += (int)Math.pow(2,numberInput.length() - 1 - i);
      }
    }
    return total;
  } 
}


Original: 

    import java.util.Scanner;
    public class Question1
    {
     public static void main(String[] args)
     {
    int binarynumber;
    int arraySize = {0,1};
    int[] binaryinput = new int[arraySize];

    Scanner input = new Scanner(System.in);
    System.out.println("Please enter a binary number");
    binarynumber = in.nextInt();
    if (binarynumber <0)
    {
      System.out.println("Error: Not a positive integer");
    }
    if (CheckInputCorrect) = true;
    {
      System.out.print(CheckInputCorrect);
    }
    public static boolean CheckInputCorrect(String input);
     {
       boolean b = true;
       int x, y;
       x = 0
       y = 1
       b = x || y

       while (b >= 0 {
         System.out.print("Please enter a binary number")
           for (int i = 0; i < binarynumber.length; i++)
         {
           binaryinput[i] = in.nextInt();
       if (binaryinput[i] = b.nextInt();
           System.out.printl("Binary number is:" + binaryinput);
           break outer;
         if (binarynumber != b)
       {
         System.out.println("Error: Not a binary number")
       }
      return true; 
     }
     }

     public static int BinaryToNumber(String numberInput)
     {
            int remainder;
            if (binarynumber <= 1) {
                System.out.print(number);
                return;   // KICK OUT OF THE RECURSION
            }
            remainder = number %2; 
            printBinaryform(number >> 1);
            System.out.print(remainder);
          return 0; 
         }
         }
          }

正如我在评论中提到的,您更新的代码包含两个错误

  • while (i < input.length());是一个无限循环,因为它没有主体。因此CCD_ 2不能增加并且将保持低于CCD_ 3
  • CCD_ 4在第一个输入之后请求另一个输入,并且第一个输入将被忽略

这是您更新代码的固定和注释版本:

public class Question1 {
  public static void main(String[] args) {
    System.out.println("Please enter a binary number for me to convert to decimal: ");
    Scanner inputKeyboard = new Scanner(System.in);
    String inputUser = inputKeyboard.nextLine();
    //boolean BinaryNumber = false; // not needed anymore
    //String inputString = ""; // not needed too
    while (!checkInputCorrect(inputUser)) { // there is no reason for using a boolean var here .. directly use the returned value of this method
      System.out.println("You have given me an invalid input. Please enter a binary number: "); // changed this message a little bit
      inputUser = inputKeyboard.nextLine(); // re-use the "old" variable inputUser here
    }
    int finalNumber = binaryToNumber(inputUser);
    System.out.println("Congratulations, your decimal number is " + finalNumber + ".");
  }
  public static boolean checkInputCorrect(String input) { // method names should start with a lower case letter
    for (int i = 0; i < input.length(); i++) {
      //while (i < input.length()); // this loop is deadly. Please think about why
      if (input.charAt(i) != '0' && input.charAt(i) != '1') {
        return false;
      }
      //i++; // what is the purpose of this? The "for" loop will increment "i" for you
    }
    return true;
  }
  public static int binaryToNumber(String numberInput) { //method name ... lower case letter ;)
    int total = 0;
    for (int i = 0; i < numberInput.length(); i++) {
      if (numberInput.charAt(i) == '1') {
        total += (int) Math.pow(2, numberInput.length() - 1 - i);
      }
    }
    return total;
  }
}

最新更新