2017-06-19 10 views
0

希望の出力が得られていますが、コードが実行されていません。 私はスキャナクラスの区切り文字として「/」を使用していると私のコードは、私が出力ウィンドウに与えているスキャナクラスの入力がデリミタで終わらない

Scanner scan = new Scanner(System.in);   
scan.useDelimiter("/"); 
while(scan.hasNext()) 
{ 
    System.out.println(scan.next()); 
} 

マイ入力

Input 
abcdef/ghijkl/out/ 

Output: 
abcdef 
ghijkl 
out 

され、プログラムがまだ実行されているです。

+0

がよろしいですことをどのように多くの文字列(各文字列は「/」で区切られている)あなたが読む必要があります? – cse

答えて

-2

あなたは問題がnext()方法である

Scanner scan = new Scanner(System.in);   
scan.useDelimiter("/"); 
while(scan.hasNext()) 
{ 
    System.out.println(scan.next()); 
    scan.close(); 
} 
+1

'IllegalStateException'を投げます。 – bradimus

+2

これを絶対にしないと、' System.in'が閉じられ、プログラムの残りの人生で利用できなくなります。 –

1

としてそれを使用します、ここでscan.close();

を使用してスキャン閉じる必要があります。この方法は、偶数のhasNext(以前の呼び出し場合、スキャンする入力を待っている間にブロックすることがと述べOracal Websiteからの抽出物は、真のパブリック文字列)(次

)が返され、次の

このスキャナから次に完全なトークンを見つけて返します。完全なトークンの前に、デリミタパターンに一致する入力が続きます。 このメソッドは、以前のhasNext()の呼び出しがtrueを返した場合でも、入力のスキャンを待つ間にブロックされることがあります。

2
import java.util.Scanner; // headers MUST be above the first class 

// one class needs to have a main() method 
public class HelloWorld 
{ 
// arguments are passed using the text field below this editor 
    public static void main(String[] args) 
    { 
    Scanner scan = new Scanner("abcdef/ghijkl/out/");   
    scan.useDelimiter("/"); 
    while(scan.hasNext()) 
     { 
      System.out.println(scan.next()); 
     } 
    } 
} 

この作品です。

キーボード(System.in)用のスキャナを開いているにもかかわらず、キーボード入力の値をどこにも保存していない可能性があります。おそらく、私はいつものJavaを教えクラスで行っているように、変数へのご入力を設定するとよいでしょう:

Scanner scan = new Scanner (System.in); 
String input = scan.nextLine(); // input: "abcdef/ghijkl/out/" 

String[] stringArray = input.split("/"); 
for(String i : stringArray) 
{ 
    System.out.println(i); 
} 
+0

投稿した最後のコードスニペットを削除しました。間違っています。 –

関連する問題