我真的很擅长编码,现在我需要从用户那里分别用空格分隔一行输入,例如“0 1 2”,然后在该字符串中取入int并将它们放在单独的int变量中
这是我到目前为止所做的:
Scanner scan = new Scanner(System.in); //takes input from user
input = scan.nextLine();
Scanner intValues = new Scanner(input); //takes input from the "input" variable
然后我将第一个int值放入变量并得到一个“NoSuchElementException”
int x = intValues.nextInt();
我在这里做错了什么?此外,我不允许使用数组进行此分配。
答案 0 :(得分:1)
无需使用2 scanner
来读取输入。您甚至可以使用一个scanner
来实现此目的。像这样:
Scanner scanner = new Scanner(System.in);
int x = scanner.nextInt();
int y = scanner.nextInt();
int z = scanner.nextInt();
答案 1 :(得分:1)
您应始终在hasNext
课程上使用Scanner
方法,以避免NoSuchelementException
例外。
请尝试以下代码段:
Scanner scan = new Scanner(System.in); //takes input from user
String input = scan.nextLine();
Scanner intValues = new Scanner(input);
while(intValues.hasNextInt()) {
int x = intValues.nextInt();
System.out.println(x);
}
或者尝试使用仅使用一个扫描仪的以下内容:
Scanner scan = new Scanner(System.in); //takes input from user
while(scan.hasNextInt()) {
int x = scan.nextInt();
System.out.println(x);
}
答案 2 :(得分:-1)
我的尝试是这样的:
Scanner scan = new Scanner(System.in); //takes input from user
String input = scan.nextLine();
int start=0;
int string_counter=0;
String s1;
String s2;
String s3;
for (int index=0; index < input.length(); index++) {
if (input.charAt(index)==' ' || index==input.length()-1) {
if (string_counter==0) {
s1=input.substring(start,index-1);
}
if (string_counter==1) {
s2=input.substring(start,index-1);
}
if (string_counter==2) {
s3=input.substring(start,index-1);
}
start=index+1;
string_counter++;
}
}
int x=Integer.valueOf(s1);
希望它有效并帮助你! 否则,如果允许阵列......
String[] parts=input.split(" ");