如何在Java中动态初始化数组?
我已尝试动态初始化数组并显示该数组 因此:如何在Java中动态初始化数组?,java,arrays,dynamic,foreach,syntax,Java,Arrays,Dynamic,Foreach,Syntax,我已尝试动态初始化数组并显示该数组 因此: import java.util.Scanner; public class Arrays { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int[] c; String cmd="yes";
import java.util.Scanner;
public class Arrays {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
int[] c;
String cmd="yes";
while(cmd=="yes") {
System.out.println("Enter value for c :");
c=new int[] {in.nextInt()};
System.out.println("Continue(yes/no)? :");
cmd=in.next();
}
for(int k:c)
System.out.println(k);
}
}
但在for each循环的最后一行(即main()的第12行),它将错误显示为“局部变量c可能尚未初始化” 其他答案是正确的,您没有初始化数组。您需要调用
c=null代码>以使其工作
但是,如果我理解正确的话,您正在尝试将数字添加到不确定大小的数组中,这在Java中是无法做到的。您应该使用ArrayList
您还使用==来比较字符串值,这是一个很大的否定,我在下面的回答中将它改为.equals
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in = new Scanner(System.in);
ArrayList<Integer> c = new ArrayList<>();
String cmd="yes";
while(cmd.equals("yes")) {
System.out.println("Enter value for c :");
c.add((Integer)in.nextInt());
System.out.println("Continue(yes/no)? :");
cmd=in.next();
}
for(Integer k:c)
System.out.println(k);
}
publicstaticvoidmain(字符串[]args){
//TODO自动生成的方法存根
扫描仪输入=新扫描仪(系统输入);
ArrayList c=新的ArrayList();
String cmd=“yes”;
而(cmd.equals(“yes”)){
System.out.println(“为c输入值:”);
c、 在.nextInt()中添加((整数);
System.out.println(“继续(是/否)?:”;
cmd=in.next();
}
for(整数k:c)
系统输出println(k);
}
对于您的实际编译错误,如果不执行循环,c
可能无法初始化。即使您知道它会(因为cmd
等于“yes”
,编译器也不会走那么远)
您将找到在开始时初始化值的答案,例如,但根据您的逻辑,您可以使用do..while
循环,因为您的逻辑显示您希望至少读取扫描仪一次
do{
System.out.println("Enter value for c :");
c=new int[] {in.nextInt()};
System.out.println("Continue(yes/no)? :");
cmd=in.next();
}while("yes".equals(cmd)); //.equals is needed to compare `String` correctly
执行block语句后检查do..while
中的条件(与之前检查条件的while
相比)。因此,该语句将至少执行一次,因此您可以确定c
将以这种方式初始化。编译器也知道这一点
由于标题中提到您需要动态大小的数组,请参阅使用将根据需要增长的集合。有关列表
的更完整帖子,请参见初始化c arr,int[]c=null
,编译器不知道代码流将始终进入while loop。在继续阶段输入no之前,是否需要使用此程序将数字输入数组?请查看while循环中的条件。最好也解决这个问题。