2016-03-30 12 views
1
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 

答えて

0

next()の代わりにnextLine()を使用する必要があります。

修正されたコードスニペット:

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 
0

あなたは上nextLineを呼び出す必要がありますあなたのScanner

それ以外の場合は、デフォルトの区切り文字(空白)が使用されるため、userSentence"7"です。

APIから

発見し、このスキャナから次の完全なトークンを返します。完全なトークンの前に、デリミタパターンに一致する入力が続きます。

...とも:

Aスキャナは、デフォルトでは空白に一致する区切り文字パターンを、使用してトークンにその入力を破ります。

関連する問題