我一直试图在两个单独的行中打印输出,我使用System.out.println()
和System.out.println("\n")
,但我似乎只得到输入的最后一个数字。我猜这个问题一定很容易解决,但我会很感激能够朝着正确的方向努力。
import java.util.Scanner;
import java.util.*;
public class StoreToArray
{
Scanner input = new Scanner(System.in);
ArrayList<Integer> al = new ArrayList<Integer>();
public static void main(String args [])
{
//Access method using object reference
StoreToArray t = new StoreToArray();
t.readFromTerminal();
}
public void readFromTerminal() {
System.out.println("Read lines, please enter some other character to stop.");
String in = input.nextLine();
int check=0;
while(true){
check = input.nextInt();
if(check == 0){ break;}
al.add(check);
}
for (int i : al) {
System.out.print(i);
}
}
}
答案 0 :(得分:2)
该行:
String in = input.nextLine();
正在捕获您输入的第一个号码,但它永远不会添加到列表中。
所以,如果你输入:
45
40
67
0
输出是:
[40,67](使用System.out.println(al))
或:
4067(使用你的for循环)。
注意,通过输入0来破坏循环,而不是非数字字符,因为第一个输出文本行会建议。
读取行,请输入其他字符停止
应该真正阅读
读取行,请输入0以停止
<强> [编辑] 强>
正确地向列表添加/显示数字:
1)删除行:
String in = input.nextLine();
2)删除末尾的for循环并替换为:
System.out.println(al);
答案 1 :(得分:1)
也许使用do do并使用try和catch。因为当你输入一个字符而不是一个数字时,你的程序就会崩溃。
public class StoreToArray
{
Scanner input = new Scanner(System.in);
ArrayList<Integer> al = new ArrayList<Integer>();
public static void main(String args [])
{
//Access method using object reference
StoreToArray t = new StoreToArray();
t.readFromTerminal();
}
public void readFromTerminal() {
System.out.println("Read lines, please enter some other character to stop.");
int check=0;
do{
try {
check = input.nextInt();
if(check != 0)
al.add(check);
}
catch(InputMismatchException e)
{
System.out.println("Failed to convert to int.");
check = 0;
}
}while(check != 0);
for (int i : al) {
System.out.println(i);
}
}
}
答案 2 :(得分:1)
如果我理解你的问题,可能就是你需要的
public void readFromTerminal() {
System.out
.println("Read lines, please enter some other character to stop.");
int check = 0;
while (true) {
check = input.nextInt();
al.add(check);
if (check == 0) {
break;
}
}
for (int i : al) {
System.out.print(i+ "\n");
}
}