0

ユーザーが文字 Q を入力したときにスクリプトを中断するには、IF ステートメントを組み込む必要があります。

また、入力を逆方向に表示する必要があります-これを行う方法がわかりません。これが私のコードです。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;


public class ArrayListOfNames {

    public static void main(String[] args) throws FileNotFoundException {

        ArrayList<String> list = new ArrayList<String>();
        Scanner Scan = new Scanner (System.in);

        String name;

        System.out.println("Please enter some words (You may press Q to finish):  ");

        while (Scan.hasNext())
        {
            name = Scan.nextLine();
            list.add(name);
        }


        Scan.close();

    }

}
4

6 に答える 6

2

Q に対してチェックするには:

while(Scan.hasNext())
{
    name = Scan.nextLine();
    if(name.equals("Q") || name.equals("q"))
    {
        break;
    }
    list.add(name);
}

リストを逆順に表示するには:

for(int i = list.size() - 1; i >= 0; i--)
{
    System.out.println(list[i]);
}
于 2013-01-11T20:48:59.347 に答える
0

これは宿題だと思うので、おそらく Stack クラスを使用するための追加のマークがあります。

ループ内のデータを取得し、スタックにプッシュします。次に、それを印刷する必要があるときに、スタックから結果をポップします。

于 2013-01-11T20:51:25.680 に答える
0

これはどう。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;


public class ArrayListOfNames {

  public static void main(String[] args) throws FileNotFoundException {

    ArrayList<String> list = new ArrayList<String>();
    Scanner Scan = new Scanner (System.in);

    String name;

    System.out.println("Please enter some words (You may press Q to finish):  ");

    while (Scan.hasNext())
    {
        name = Scan.nextLine();
        if( name.equals("Q") ) {
           break;
        }
        list.add(name);
    }


    Scan.close();

  }

}
于 2013-01-11T20:47:52.713 に答える
0

入力を後方に表示するには、入力をスキャンするループの後にこのコードを配置します。

for(int i = list.size()-1; i>=0; i--)
    System.out.println(list.get(i));
于 2013-01-11T20:47:58.863 に答える
0
while (Scan.hasNext())
    {
        name = Scan.nextLine(); 
         //Input is stored to name, so you need to compare input with Q
         if("Q".equals(name)
          {
            //You need to exit the loop
             break;
          }
       list.add(name);
    }
//You have what ever user entered in list. So use iterator (or) for-each to print them out again.
于 2013-01-11T20:48:08.990 に答える
0

ソフトウェア エンジニアリングの観点から、break;ループ内でステートメントを使用しないようにしています。代わりに、ターミネータを使用することをお勧めします

final String TERMINATOR = "Q";
boolean terminated = false;

while (scanner.hasNext() && !terminated)
{
    String line = scanner.next();

    if (!line.equals(TERMINATOR))
    {
       list.add(line);
    }
    else
    {
       terminated = true;
    }
}

また、通常のリスト追加の!line.equals(TERMINATOR)代わりにどのように行うかにも注意してください。line.equals(TERMINATOR)これは、リストの追加が公称ケースであり、そのため、最小限のチェックとジャンプを行いたいためです。

リストを逆に印刷する場合は、単純な後方反復 for ループを実行できます。

for (int i = list.size()-1; i >= 0; i--)
{
    System.out.print(list.get(i) + " ");
}
于 2013-01-11T22:31:06.820 に答える