5
import java.util.*;

public class CyclicShiftApp{

   public static void main(String[] args){
      Scanner scan = new Scanner(System.in);
      ArrayList<Integer> list = new ArrayList<Integer>();
      while(scan.hasNextInt()){
         list.add(scan.nextInt());
      }
      Integer[] nums = new  Integer[list.size()];
      nums = list.toArray(nums);
      for(int i = 0;i < nums.length; i++){
      System.out.println(nums[i]);
      }   
}

poor-mans-debugging のおかげで、while(scan.hasNextInt())実際には何も追加されていないことがわかりました。何がうまくいかないのですか?私のGoogle-fuは弱いですか、それともノウハウの欠如が私を失望させていますか? 私はプログラミングにかなり慣れていないので、リストに慣れていないので、これは良い最初のステップになると思いましたが、何かがうまくいきません. また、正常にコンパイルされるため、構文ではありません(もう)。もしかしてキャスティングの問題?

4

4 に答える 4

2

あなたの問題はここにあります:

 while(scan.hasNextInt()){  <-- This will loop untill you enter any non integer value
     list.add(scan.nextInt());
  }

qたとえば、すべての整数値の入力が完了したら、文字を入力するだけで、プログラムは期待される結果を出力します。

Sample Input :14 17 18 33 54 1 4 6 q
于 2013-04-19T06:08:51.360 に答える
2

これでうまくいきますか、サムワイズ様?

import java.util.*;

public class CyclicShiftApp{

public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    ArrayList<Integer> list = new ArrayList<Integer>();
    System.out.print("Enter integers please ");
    System.out.println("(EOF or non-integer to terminate): ");

    while(scan.hasNextInt()){
         list.add(scan.nextInt());
    }

    Integer [] nums = list.toArray(new Integer[0]);
    for(int i = 0; i < nums.length; i++){
       System.out.println(nums[i]);
    }
  }   
}

リストを配列として必要とする理由があると思います。そうでない場合、配列への変換は不要です。Jon Skeet がコメントで言及しているように、ループはストリームに次の int がない場合にのみ終了します。「java CyclicShiftApp < input_file.txt」を使用している場合は、非整数値またはファイルの EOF。

于 2013-04-19T06:15:52.233 に答える