0
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 执行。

顺便说一句,我需要他们成为 INT,因为我之后需要对他们做一些事情......我该如何解决这个问题?(我班的问题是……)

编写一个程序,使用 Scanner 读取三个整数(正数)显示最大的三个数。(请不要使用运算符 && 或 || 中的任何一个来完成。这些运算符将很快在课堂上介绍。类似的循环不是必需的。)

一些示例运行:

请输入 3 个整数:5 8 3

三个的最大值是:8

4

4 回答 4

2

而不是 input = keyboard.next();尝试 input = keyboard.nextLine();

根据Scanner文档,默认分隔符是空格 -

Scanner 使用分隔符模式将其输入分解为标记,默认情况下匹配空格。

而方法next()——

从此扫描器中查找并返回下一个完整的令牌。一个完整的标记前后是匹配分隔符模式的输入。

所以在我们的例子中,keyboard.next()只返回第一个数字作为字符串。

于 2012-10-02T02:22:36.707 回答
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);

    }   
}
于 2012-10-02T02:30:00.307 回答
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循环只执行一次,不带空格的字符串存储在字符串引用结果中,因此使用显示数字result.charAt()给出了正确的结果。

于 2014-04-28T09:05:23.640 回答
-1

用于keyboard.nextInt()读取 int 值。如果需要读取 3 个值,请使用 3 次。

文档链接:

将输入的下一个标记扫描为 int。如果下一个标记无法转换为有效的 int 值,则此方法将抛出 InputMismatchException,如下所述。如果翻译成功,扫描仪会超过匹配的输入。

如果您不知道下一个数据是否可以是整数,则可以使用Scanner#hasNextIntmethod.

于 2012-10-02T02:21:59.823 回答