Java数组重复
我试图根据用户输入设置数组,但我有一个主要问题。这是我的密码:Java数组重复,java,Java,我试图根据用户输入设置数组,但我有一个主要问题。这是我的密码: Scanner myScanner = new Scanner(new BufferedInputStream(System.in)); System.out.println("Please enter your text"); ArrayList myArray = new ArrayList(); while (myScanner.hasNext()){ myArray.add(mySca
Scanner myScanner = new Scanner(new BufferedInputStream(System.in));
System.out.println("Please enter your text");
ArrayList myArray = new ArrayList();
while (myScanner.hasNext()){
myArray.add(myScanner.nextLine());
for (int i = 0; i <myArray.size() ; i++) {
System.out.println(myArray.get(i));
}
}
我只是
a
a
b
还有更好的打印阵列的方法吗
编辑:
当我像这样更改代码时
while (myScanner.hasNext()){
myArray.add(myScanner.nextLine());
break;
}
for (int i = 0; i <myArray.size() ; i++) {
System.out.println(myArray.get(i));
}
while(myScanner.hasNext()){
添加(myScanner.nextLine());
打破
}
对于(int i=0;i,每次从扫描仪获得下一行时,它都会将数组大小增加1。因此,输入字母表,您将获得a、b、c、d、e…
等等
每次输入后,for循环都会输出整个数组。因此,第一次数组将有a
,第二次数组将有a、b
,依此类推。如果继续,您的输出将以这种格式继续a、a、b、a、b、b、b、b、c、d..
。您之所以没有a、b、c
输出,是因为等待查找while循环的myScanner.hasNext()
条件
希望这有帮助,请随时询问澄清。每次从扫描仪中获取下一行时,阵列大小会增加1。因此,输入字母表,您将获得a、b、c、d、e…
等等
每次输入后,for循环都会输出整个数组。因此,第一次数组将有a
,第二次数组将有a、b
,依此类推。如果继续,您的输出将以这种格式继续a、a、b、a、b、b、b、b、c、d..
。您之所以没有a、b、c
输出,是因为等待查找while循环的myScanner.hasNext()
条件
希望这有帮助,请随时询问澄清。您每次通过while
循环时都会打印整个数组。在while
循环的第一次迭代中,for
循环打印出a
,第二次通过while
循环打印出de>a
(再次)和b
将for
循环移出while
循环以获得预期输出,如下所示:
while (myScanner.hasNext()){
myArray.add(myScanner.nextLine());
} // end of while
for (int i = 0; i <myArray.size() ; i++) {
System.out.println(myArray.get(i));
}
while(myScanner.hasNext()){
添加(myScanner.nextLine());
}//时间结束
对于(int i=0;i每次通过while
循环时,您都在打印整个数组。在while
循环的第一次迭代中,for
for循环打印出a
,第二次通过while
循环,for循环打印出a
(再次)和b
将for
循环移出while
循环以获得预期输出,如下所示:
while (myScanner.hasNext()){
myArray.add(myScanner.nextLine());
} // end of while
for (int i = 0; i <myArray.size() ; i++) {
System.out.println(myArray.get(i));
}
while(myScanner.hasNext()){
添加(myScanner.nextLine());
}//时间结束
对于(int i=0;i发生重复是因为您试图反复打印ArrayList myArray的所有值。因此,当用户输入A时,myArray将存储A,然后for循环打印A,然后在下一行,当用户输入B时,myArray=A,B,for循环打印A和B,依此类推。将for循环置于ile循环,它获取用户的所有输入,让用户完成所有输入,您必须有一种方法让用户退出循环,就像键入“Q”退出一样。发生重复是因为您试图一次又一次地打印ArrayList myArray的所有值。因此,当用户输入a时,myArray将存储afor循环打印A,然后在下一行,当用户输入B时,myArray=A,B,for循环打印A和B,依此类推。将for循环放在while循环之外,while循环获取用户的所有输入,让用户完成所有输入,您必须有一种方法让用户退出循环,就像键入“Q”退出一样。其他人已经回答了第一个问题,所以我将回答第二个问题:没有客观上“更好”的方法来打印ArrayList。但这里有一个更简洁的方法,相当于您的循环:
myArray.forEach(System.out::println);
其他人已经回答了第一个问题,所以我将回答第二个问题:没有客观上“更好”的方法来打印ArrayList。但这里有一个与您的循环相对应的更简洁的方法:
myArray.forEach(System.out::println);
我忘了提到将for循环移到while循环之外会得到预期的结果,但是其他答案现在已经解决了这个问题。我忘了提到将for循环移到while循环之外会得到预期的结果,但是其他答案现在已经解决了这个问题。我在写本文之前尝试过这个但是我不能得到任何返回。它在那里被卡住了。然后我在while循环中添加了一个break;
,但这只是给了我作为数组的第一行。@MuharremYelmer正如我在回答中提到的,while循环总是等待myScanner.hasNext()
condition。添加一个中断只会在第一次迭代后中断,并将输出到目前为止的一个输入。@Timtech我尝试添加一个工作正常的中断,但如何获得其他2个条目?@MuharremYelmer如果你知道你只想要3个条目,你应该使用for循环精确地循环3次。@MuharremYelmer好的,很明显然后,您必须更改循环的条件,以检查您已给出所有项的信号。现在,您的程序的while循环不知道在何处停止。我在这里编写之前尝试了这个循环,但没有得到任何返回。它在那里被卡住。然后,我在while循环中添加了一个中断;
,但它只是给出了一个提示将第一行作为数组显示。@MuharremYelmer正如我在您的回答中提到的,while循环总是在myScanner.hasNext()上等待
condition。添加一个中断只会在第一次迭代后中断,并将输出到目前为止的一个输入。@Timtech我尝试添加一个工作正常的中断,但如何获得其他2个条目?@MuharremYelmer如果你知道你只想要3个条目,你应该使用for循环精确地循环3次。@MuharremYelmer好的,很明显那你就得去成龙