-1

次の問題があります...入力から不明な数の文字列を読み取りたいです。そこで、arraylist'words'を作成し、入力からすべての文字列を追加しました。次に、この配列リストをより単純な文字列配列'wordsarray'(String [])に変換したかったのですが、すべてが問題ないかどうかを確認したかったので(単語が「wordsarray」に保存されている場合)、印刷してみました。配列全体...しかし、それは私が望んでいたものを私に与えません...私のコードは機能しないようです。問題はどこだ?ご協力いただきありがとうございます

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    List<String> words = new ArrayList<String>();

    while(sc.hasNextLine()) {
         words.add(sc.nextLine());
    }

    String[] wordsarray = new String[words.size()];

    for(int i = 0; i < words.size(); i++) {
        wordsarray[i] = words.get(i);
    }

    for(int i = 0; i < words.size(); i++) {
        System.out.println(wordsarray[i]);
    }
}
4

2 に答える 2

4

あなたがやろうとしていることをするための事前に調理された方法があります:

ArrayList<String> words = new ArrayList<String>();
String[] array = words.toArray(new String[words.size()]);

しかし、あなたのコードは正しいようです、あなたはすべてが内部でうまくフェッチされていると確信していますArrayListか?

あなたのコメントによると、問題はあなたがすべてをループの中に入れていないという事実だと思います。このコード:

while(sc.hasNextLine()) {
  words.add(sc.nextLine());
}

一度だけ動作します。Scanner単語を挿入してEnterキーを押し続けると、フェッチする行がなくなるポイントにすでに到達しているため、ループの外に出ています。

次のようなことをする必要があります。

boolean finished = false;

while (!finished) {
  while(sc.hasNextLine()) {
      String line = sc.nextLine();
      if (line.equals(""))
        finished = true;
      else
        words.add(sc.nextLine());
    }
  }
}
于 2013-01-03T18:06:58.587 に答える
0

これは私にとってはうまくいきます:

import java.util.*;

public class a
{
  public static void main (String [] args) throws Exception
  {
    Scanner sc = new Scanner(System.in);

    List<String> words = new ArrayList<String>();

    while(words.size () < 3 && sc.hasNextLine ()) {
        String s = sc.nextLine();
        System.out.println ("Adding " + s);
        words.add(s);
    }

    String[] wordsarray = words.toArray(new String [] {});

    for(int i = 0; i < words.size(); i++) {
       System.out.println("Printing ..." + wordsarray[i]);
    }
  }
}

出力:

java a
1
Adding 1
2
Adding 2
3
Adding 3
Printing ...1
Printing ...2
Printing ...3
于 2013-01-03T18:32:03.167 に答える