Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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,我试图根据用户输入设置数组,但我有一个主要问题。这是我的密码: 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好的,很明显那你就得去成龙