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

这个怎么样。

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 回答
0

因为我怀疑这是家庭作业,所以使用 Stack 类可能会有额外的分数。

获取循环中的数据并将其推送到堆栈中。然后,当您需要打印它时,从堆栈中弹出结果。

于 2013-01-11T20:51:25.680 回答