这是我在java中的代码。 System.out.println(averager(A));
出现问题。 Java表示局部变量A可能尚未初始化。
import java.util.Scanner;
public class Averager {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("How many numbers do you want to average?(2-4 only");
int x;
int[] A;
x = input.nextInt();
int Array4[]={input.nextInt(),input.nextInt(),input.nextInt(),input.nextInt()};
int Array3[]={input.nextInt(),input.nextInt(),input.nextInt()};
int Array2[]={input.nextInt(),input.nextInt()};
if (x=='2'){
A =Array2;
}
else if (x=='3'){
A = Array3;
}
else if (x=='4'){
A= Array4;
}
else{
System.out.println("Error!");
}
System.out.println(averager(A)); // Error
}
public static int averager(int...numbers){
int total=0;
for(int x:numbers){
total+=x;
}
return total/numbers.length;
}
}
答案 0 :(得分:6)
查看您的代码,并考虑如果x
不是'2'
,'3'
或'4'
会发生什么。
A
是什么
System.out.println(averager(A));
线?
右键!你从来没有给它一个价值。这就是编译器警告你的内容。
答案 1 :(得分:0)
java中的数组可以初始化= null
,因为如果代码没有输入if语句,则永远不会设置A.此外,如果您已经知道数组的尺寸,您可以像这样初始化它:
int[] A = new int[numberofelements];
答案 2 :(得分:0)
你的代码错了。
它总是从STDIN读取9(4 + 3 + 2)个数字(在Array4到Array2部分)。
你想做的可能是
int x = input.nextInt();
int[] A = new int[x];
for ( int i = 0; i < x; ++i ) A[i] = input.nextInt();
但是如果你只想解决“局部变量A可能尚未初始化”。警告,打印错误后返回(结束程序)
else {
System.out.println("Error!");
return;
}
答案 3 :(得分:0)
您可以将代码更改为
int x = input.nextInt();
int[] A= new int[x];
答案 4 :(得分:-1)
更改:int [] A = null;
将int x
更改为int x = 0;
。您需要在java中初始化变量。