3

我刚开始学习Java,我正在尝试做一个猜数字游戏,无论如何我正在使用

    int guess = Integer.parseInt(stringGuess);

    inputLine = is.readLine();
    Integer.parseInt(inputLine);

我想知道是否无论如何我可以让程序识别并使用一堆空格作为整数,基本上我该如何编码它以便“0”将被识别为0?

4

6 回答 6

1
int guess = Integer.parseInt(stringGuess.trim());

请参阅http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#trim%28%29

于 2013-06-14T06:45:04.817 回答
1

一个更“强大”的工具是从字符串中删除所有非数字字符,可以这样完成:

int guess = Integer.parseInt(stringGuess.replaceAll("\\D", ""));
于 2013-06-14T06:48:01.080 回答
0
if (stringGuess!=null) {
int guess = Integer.parseInt(stringGuess.trim());
}
于 2013-06-14T06:45:22.357 回答
0
int guess = 0

if(stringGuess != null) {
    try {
        guess = Integer.parseInt(stringGuess.trim());
    } catch(NumberFormatException nfe) {
        // inform user that the number was bad?
    }
}

如果您还需要处理数字之间的空格(或任何非数字),您可以使用:

int guess = 0

if(stringGuess != null) {
    try {
        guess = Integer.parseInt(stringGuess.replaceAll("[^0-9]+", ""));
    } catch(NumberFormatException nfe) {
        // inform user that the number was bad?
    }
}
于 2013-06-14T06:48:40.690 回答
0
Scanner sc = new Scanner(System.in);
int guess = 0
if(sc.hasNextInt())
    guess = sc.nextInt();

但是,它会将像“1 2 3 4”这样的字符串检测为四个不同的整数,而不是 1234,如果这就是您的意思的话。

于 2013-06-14T06:49:22.453 回答
0

trim()只能省略前导和尾随空格。

如果你不想使用replace("\\D", ""),我想你可以自己实现一个parseInt()方法,你可以复制代码Integer.parseInt并在if (s.charAt(i++) != ' ')之前添加digit = Character.digit(s.charAt(i++),radix);并更改Character.digit(s.charAt(i++),radix)Character.digit(s.charAt(i),radix)

于 2013-06-14T07:30:51.477 回答