import java.util.Scanner;
public class Question3 {
public static void main(String[] args) {
String input;
int i1,i2,i3;
Scanner keyboard = new Scanner(System.in);
System.out.println("Input a 3 digit number ");
input = keyboard.next();
String[] numbers = input.split("\\s+");
i1= Integer.parseInt(numbers[0]);
i2= Integer.parseInt(numbers[1]);
i3= Integer.parseInt(numbers[2]);
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
}
}
这是它应该做的:有人类型 1 2 3 并且程序应该输出
1
2
3 但是,它会在行i2 = ....
处抛出一个arrayindexoutofbounds execpetion我需要他们成为INTs顺便说一句,因为我之后需要做些什么......我怎么能解决这个问题? (我班上的问题是......)
编写一个程序,使用扫描仪读取三个整数(正数)显示最多三个。 (请不要使用任何一个运算符&&或||来完成。这些运算符很快就会在课堂上介绍。不需要类似的循环。)
一些示例运行:
请输入3个整数:5 8 3
最多三个是:8
答案 0 :(得分:2)
而不是input = keyboard.next();
尝试input = keyboard.nextLine();
根据Scanner
文档,默认分隔符为空格 -
扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。
方法next()
-
查找并返回此扫描仪的下一个完整令牌。完整的标记之前和之后是与分隔符模式匹配的输入。
所以在我们的例子中keyboard.next()
只返回第一个数字作为字符串。
答案 1 :(得分:2)
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int i1,i2,i3;
Scanner keyboard = new Scanner(System.in);
System.out.println("Input a 3 digit number ");
i1= Integer.parseInt(keyboard.next());
i2= Integer.parseInt(keyboard.next());
i3= Integer.parseInt(keyboard.next());
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
}
}
答案 2 :(得分:0)
import java.util.Scanner;
class Question3 {
public static void main(String[] args) {
String input;
int i1,i2,i3;
Scanner keyboard = new Scanner(System.in);
System.out.println("Input a 3 digit number ");
input = keyboard.next();
int i=0;
for (String result: input.split("\\s+")){
System.out.println(result.charAt(i++));
System.out.println(result.charAt(i++));
System.out.println(result.charAt(i++));
}
}
}
您的原始代码包含以下错误:numbers[0]
包含没有空格的String的所有元素,因此在尝试访问numbers[1]
时会引发错误。在此代码中,for
循环仅执行一次,没有空格的String存储在String引用结果中,因此使用result.charAt()
显示数字会得到正确的结果。
答案 3 :(得分:-1)
使用keyboard.nextInt()
读取int值。如果您需要阅读3个值,请使用3次。
文档链接:
将输入的下一个标记扫描为int。如果下一个标记无法转换为有效的int值,则此方法将抛出InputMismatchException,如下所述。如果翻译成功,扫描仪将超过匹配的输入。
如果您不知道下一个数据是否可以是整数,则可以使用Scanner#hasNextInt
方法。