2016-10-19 14 views
0

ラン:私はそれを実行した場合コンソールをJavaでデバッグモードで読み込む方法は? IntelliJ IDEAでプログラム次

package org.stepic.java; 

import java.util.ArrayDeque; 
import java.util.Iterator; 
import java.util.Scanner; 

public class Main { 

    public static void main(String[] args) { 
     ArrayDeque<Integer> deque = new ArrayDeque<>(); 

     //try (Scanner scan = new Scanner(System.in)) { 
     try (Scanner scan = new Scanner("1 2 3 4 5 6 7")) { 
      int i = 0; 
      while(scan.hasNext()){ 
       if(scan.hasNextInt()) { 
        Integer number = scan.nextInt(); 
        if((i++ % 2) == 1) deque.add(number); 
       } else { 
        scan.next(); 
       } 
      } 

      Iterator<Integer> it = deque.descendingIterator(); 
      while(it.hasNext()) { 
       Integer num = it.next(); 
       System.out.printf("%s ", num.toString()); 
      } 
     } catch(Exception e) { 
     } 
    } 
} 

、私はCtrlキー押し、コンソールに一部を入力することができます - Dをし、それがスキャナに保存されます。デバッガで同じことを行うと、IDEAは行をスキップするだけです。

Scanner scan = new Scanner(System.in) 

と入力することはできません。この場合、スキャナbufは空です。デバッグモードでコンソールにテキストを入力する方法は?

+0

あなたのJavaバージョン/あなたのIJバージョン/コンソールの最初の行からの実行ファイルのパスはどれですか?ブレークポイントはどこに置いていますか?デバッグモードはうまく動作します。 –

+0

Java 1.8、オープンJDK: '/usr/lib/jvm/java-1.8.0-openjdk-amd64/...'、ブレークポイント 'int i = 0;' ... –

答えて

0

標準入力が正しく

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    if(scan.hasNext()) { 
     System.out.println("Got " + scan.next()); 
    } 
} 

それはprintlnの上のブレークポイントで、デバッグモードで動作するデバッグモード(F5)で動作します。

デバッグモードで[コンソール]がデフォルトのタブではなく、[デバッガ]ウィンドウにテキストを入力しようとしていることに気づかなかったのでしょうか?

+0

これはF5(run )、Ctrl-А5(debug)は何も読まない。このソリューションはうまくいきません。申し訳ありません。 –

+0

私の設定でF5がデバッグされています – rustot

+0

しかし、何らかの理由でデバッグが動作しません。コンソールはデフォルトではありませんが、もちろんコンソールに切り替わります:) –

0

あなたはscan.next()かVariable Watchで類似していると思います。それを削除すると正しく動作する可能性があります。私はスタックの同様の問題を抱えていた<>()

+0

そのようなものはありません。 –

関連する問題