Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Java中解析为变量_Java - Fatal编程技术网

无法在Java中解析为变量

无法在Java中解析为变量,java,Java,我在Java中遇到了这个问题。 当我运行程序时,它会给我一个错误:变量名不能解析为变量 if(name.equalsIgnoreCase("...")) { System.out.print("..."); float name1=SIn.readFloat(); } else if(name.equalsIgnoreCase("...")){ System.out.print("...");

我在Java中遇到了这个问题。 当我运行程序时,它会给我一个错误:变量名不能解析为变量

if(name.equalsIgnoreCase("...")) {
    System.out.print("...");
    float name1=SIn.readFloat();
} else if(name.equalsIgnoreCase("...")){
    System.out.print("...");
    float name2=SIn.readFloat();
}
try {
    float converted=name1*valueget;    //the error is here with the variable 'name'
    System.out.println(...);
}

答案很简单,您正在尝试使用不存在的变量。假设第一个if返回false,那么变量name1永远不会初始化

if(name.equalsIgnoreCase("...")) {    // doesn't equal
    System.out.print("...");
    float name1 = SIn.readFloat();    // not initialized
} else if(name.equalsIgnoreCase("...")){
    System.out.print("...");
    float name2 = SIn.readFloat();
}
try {
    float converted = name1 * valueget;    // using non-existing variable
    System.out.println(...);
}
您应该做的是,在if-else语句之前声明一个变量,并在if-else中初始化它


1您没有声明名称2不要期望在退出各自的ifs后能够使用名称1和名称2,因为它们将超出范围给定的代码段不足以确定实际问题。但是,从我已经看到的情况来看,名称是一个字符串,不能与某个值相乘以返回一个浮点值。请进一步阅读变量名声明,我没有转录它,但它在那里。@Morgan如果您询问一个错误,说变量名未声明,您至少可以向我们展示您如何以及在何处声明它,您不认为吗?您的解决方案是正确的,但这是:让我们说,第一个if返回false,那么变量name1永远不会初始化。事实并非如此。这不是它的工作原理。这些变量name1和name2在上下文中超出范围,它们在try块中使用name1。你所说的在其他一些语言中是正确的,但在java中不是。
float floatName = 0;   // set it up as zero, because you don't have else statement
if(name.equalsIgnoreCase("...")) {
    System.out.print("...");
    floatName = SIn.readFloat();
} else if(name.equalsIgnoreCase("...")){
    System.out.print("...");
    floatName = SIn.readFloat();
}
try {
    float converted = floatName * valueget;
    System.out.println(...);
}