Java 初始化变量,表示未初始化

Java 初始化变量,表示未初始化,java,initialization,Java,Initialization,如果有人对如何解决这个问题有任何想法,我们将不胜感激。代码在运行时出错,显示的错误消息是:“变量rr、xx、yy、zz可能尚未初始化”。我尝试了许多不同的方法,但无法使代码与rr+xx+yy+zz的结果相等。我刚开始学习java,所以我不是过于自信,我不是在忽视我做错的事情。提前谢谢你 初始化变量时,将其指定为0,这将考虑到您的代码: import java.util.Scanner; class Main { public static void main(String[] args) {

如果有人对如何解决这个问题有任何想法,我们将不胜感激。代码在运行时出错,显示的错误消息是:“变量rr、xx、yy、zz可能尚未初始化”。我尝试了许多不同的方法,但无法使代码与rr+xx+yy+zz的结果相等。我刚开始学习java,所以我不是过于自信,我不是在忽视我做错的事情。提前谢谢你

初始化变量时,将其指定为0,这将考虑到您的代码:

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    Scanner numb = new Scanner(System.in);
    int r;
    int x;
    int y;
    int z;
    int rr;
    int xx;
    int yy;
    int zz;
    boolean a1 = false;
    boolean a2 = false;
    boolean a3 = false;
    boolean a4 = false;
    System.out.println("Type four one's or zero's to convert a base 2 number to base 10. Please press enter between each one or zero: ");
    r = numb.nextInt();
    while (a1 == false) {
      if (r == 0) {
        a1 = true;
        rr = 0;
        } else if (r == 1) {
        a1 = true;
        rr = 8;
        } else {
        a1 = false;
        System.out.println("Please enter a 1 or a 0: ");
        r = numb.nextInt(); 
        } //end else
      } //end while
    x = numb.nextInt();
    while (a2 == false) {
      if (x == 0) {
        a2 = true;
        xx = 0;
        } else if (x == 1) {
        a2 = true;
        xx = 4;
        } else {
        a2 = false;
        System.out.println("Please enter a 1 or a 0: ");
        x = numb.nextInt(); 
        } //end else
      } //end while
    y = numb.nextInt();
    while (a3 == false) {
      if (y == 0) {
        a3 = true;
        yy = 0;
        } else if (y == 1) {
        a3 = true;
        yy = 2;
        } else {
        a3 = false;
        System.out.println("Please enter a 1 or a 0: ");
        y = numb.nextInt(); 
        } //end else
      } //end while
    z = numb.nextInt();
    while (a4 == false) {
      if (z == 0) {
        a4 = true;
        zz = 0;
        } else if (z == 1) {
        a4 = true;
        zz = 1;
        } else {
        a4 = false;
        System.out.println("Please enter a 1 or a 0: ");
        z = numb.nextInt();
        } //end else
      } //end while
      int a = rr + xx + yy + zz;
      System.out.println("You entered " + r + x + y + z + ", in base 10 that number is " + a);
    } //end main
} //end class Main
这类似于比较空瓶子和满瓶子中的水量。这不是一个明智的比较,因为前者甚至不含水。
我希望我的类比能有所帮助。

这些变量是声明的,但不是初始化的。当你做
inta=rr+xx+yy+zz时,它们没有价值。你希望代码< > < <代码>之后有什么价值?我建议你用有意义的名字来命名变量。你可能想考虑使用数组和循环,以避免重复本质上相同的代码。我们还没有在课堂上被教过。谢谢你的建议!好的,谢谢!为什么要这样?只是好奇,这样我就可以为将来学习。@MichaelPennington不需要这样。事实上,在您的原始代码中,如果您这样做,
a
的值将为零,这不是您想要的。这更有意义。谢谢你的解释。如果你能投赞成票并接受它,对我来说意义重大。除非它能帮助你。
int r; // You declared the variable [r] without initializing it with a valid integer value.

while (a1 == false) {
    if (r == 0) { 
    // It is semantically and syntactically wrong to compare the value of an...
    // ...undefined variable to a defined variable or a value.
        a1 = true;
        rr = 0;
    } else if (r == 1) {
        a1 = true;
        rr = 8;
    } else {
        a1 = false;

    System.out.println("Please enter a 1 or a 0: ");
    r = numb.nextInt(); 
    } //end else
  } //end while
x = numb.nextInt();