0

したがって、問題は、ユーザーが入力する文の単語の順序を逆にすることです。単語がハードコードされている多くの例に出くわしましたが、それらを問​​題なく元に戻すことができます。しかし、コードをスキャナー入力に適合させようとすると、入力を印刷するためのベクトルを取得することさえできず、逆にすることはできません。何も起こりません..コードは次のとおりです。誰かが私を助けることができれば、それは素晴らしいことです!

public static void main(String[] args) {
      Scanner s = null;
      Vector v = new Vector();
      String words;

      System.out.println("Enter a sentence: ");
      try {
          s = new Scanner(System.in);
            while (s.hasNext()) {
                words = s.next();
                v.add(words);
            }
        } 
        finally {
               if (s != null) {
                   s.close(); // Close scanner when no more input is available
                }
      }  
      System.out.println(v);
  }

PS:ベクトルを取得して入力であることを示すことさえできず、逆にすることはできません..だから、まだそこに行き詰まっています。と。割り当てが必要とするため、ベクトルである必要があります。

4

2 に答える 2

3

これは、小さな変更を加えたコードです。v.add(0, words) を使用して、最後に読み取った単語を最初の位置に挿入しています。にも変更VectorしましたVector<String>。Unix で終了するには Ctrl+D を使用します。

public static void main(String[] args) {
      Scanner s = null;
      Vector<String> v = new Vector<String>();
      String words;

      System.out.println("Enter a sentence: ");
      try {
          s = new Scanner(System.in);
            while (s.hasNext()) {
                words = s.next();
                v.add(0, words);
            }
        } 
        finally {
               if (s != null) {
                   s.close(); // Close scanner when no more input is available
                }
      }  
      System.out.println(v);
  }

例:

Enter a sentence: 
aa bb cc
[cc, bb, aa]

(Ctrl+D で終了します。)

于 2013-03-20T16:18:26.757 に答える
3

私はあなたのコードをテストしましたが、正常に動作します (明らかに、ベクトルは逆になりません)。

問題は、文を入力し終わったときにそれを伝える必要があることです。

Unix では、これは入力の最後でCtrl+を押すことによって行われます。DWindows では、Ctrl+Zに続いてを押しEnterます。

これを行わないと、コードはそこにとどまり、次の入力を無期限に待機します。

于 2013-03-20T16:18:30.960 に答える