我试图检查句子的数字。代码似乎在句子的第一个单词后停止运行

时间:2016-03-30 15:12:04

标签: java

import java.util.Scanner; 
public class DigitSumming {

    public static Scanner in = new Scanner(System.in);
    public static void main(String[] args) {
        System.out.println ("Please enter a sentence: ");
        String userSentence = in.next();

        //writing for loop to check each character
        int sum = 0;
        int i;
        for (i = 0; i < userSentence.length(); i++) {
            if (Character.isDigit(userSentence.charAt(i))){
                System.out.println("number: "+ userSentence.charAt(i));
            }
        }
    }
}

这是我运行程序时得到的结果:

Please enter a sentence: 

7 ate 9

输出:

number: 7

2 个答案:

答案 0 :(得分:0)

您应该在nextLine上调用Scanner

否则,将使用默认分隔符(空格),因此userSentence仅为"7"

来自API

  

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

......还有:

  

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。

答案 1 :(得分:0)

您必须使用nextLine()而不是next()

更正了代码段:

import java.util.Scanner; 
public class DigitSumming {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println ("Please enter a sentence: ");
        /* Corrected Here */
        String userSentence = in.nextLine();

        //writing for loop to check each character
        int sum = 0, i;
        for (i = 0; i < userSentence.length(); i++) {
            if (Character.isDigit(userSentence.charAt(i))){
                System.out.println("number: "+ userSentence.charAt(i));
            }
        }
    }
}

输入:

7 ate 9

输出:

number: 7
number: 9