如何在关键字触发它停止之前将用户输入添加到ArrayList中?

时间:2015-01-22 06:12:05

标签: java arraylist java.util.scanner

所以我试图编写一个允许用户在命令行输入单词的Java程序。当用户输入" STOP"时,程序应停止接受单词。将单词存储在ArrayList中。单词STOP不应存储在列表中。

接下来,打印列表的大小,然后打印列表的内容。

然后,删除列表中存储的第一个和最后一个单词,但前提是列表的长度大于2。最后,重新打印列表的内容。

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
public class t2_lesson1_template {

    public static void main (String str[]) throws IOException
    {
        ArrayList<String> list  = new ArrayList<String>();

        Scanner scan = new Scanner(System.in);  


        do 
        {
            System.out.println("What would you like to add to the list?"); 
            String input = scan.nextLine();
            list.add(input);
        }

        while( scan.nextLine() != "STOP");


       if ( list.size() < 2)
       {
        System.out.println(list);
        System.out.println(list.size());
       }
       else
       {
        list.remove(0);
        list.remove(list.size()-1);
        System.out.println(list);
        System.out.println(list.size());
       }
   }

}

它一直在提示问题,但从未意识到&#34;停止&#34;是输入。如果有人可以帮我弄清楚什么是错的,它会帮助很多。谢谢!

4 个答案:

答案 0 :(得分:2)

scan.nextLine() != "STOP"更改为while(!scan.nextLine().equalsIgnoreCase("stop"));并尝试。

原因:

String Literal "STOP"与从键盘输入的字符串值"STOP"不同(在您的情况下)。 ==比较参考文献。你必须检查2个字符串的值而不是引用。

答案 1 :(得分:1)

排队:

scan.nextLine() != "STOP"

比较对两个对象的引用。如果需要比较对象,则应使用Object的equals()方法。

阅读the documentation中的equals()。

但您的代码中还有另一个问题。你读了下一行两次。 在循环和while(...)语句中。

试试这个:

System.out.println("What would you like to add to the list?");
String input = scan.nextLine();
while(!input.equals("STOP"))
{
    list.add(input);
    input = scan.nextLine();
}

答案 2 :(得分:1)

请尝试以下代码: -

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;

public class t2_lesson1_template {

  public static void main(String str[]) throws IOException {
    ArrayList<String> list = new ArrayList<String>();

    Scanner scan = new Scanner(System.in);

    System.out.println("What would you like to add to the list?");
    String input = scan.nextLine();

    while (!input.equals("STOP")) { // compare string using equals(Object o) method
      list.add(input);

      System.out.println("What would you like to add to the list?");
      input = scan.nextLine();
    }

    System.out.println("Size of list = " + list.size());

    System.out.println("Input list:-\n" + list);

    if (list.size() > 2) {
      list.remove(0);
      list.remove(list.size() - 1);

      System.out.println("List after removing first and last eliment:-\n" + list);
    }
  }

}

答案 3 :(得分:0)

import java.io.*;
import static java.lang.System.*;

import java.util.Scanner;
import java.lang.Math;

import java.util.ArrayList;

public class U7_L1_Activity_One{

   public static void main (String str[]) throws IOException {
   ArrayList<String> list = new ArrayList<String>();

        Scanner scan = new Scanner(System.in);  

    System.out.println("Please enter words, enter STOP to stop the loop.");
    String input = scan.nextLine();

    while (!input.equals("STOP")) { // compare string using equals(Object o) method
      list.add(input);
      input = scan.nextLine();
       }

    System.out.println(list.size());

    System.out.println(list);
    
  //  System.out.println("Size of list = " + list.size());

    //System.out.println("Input list:-\n" + list);

    if (list.size() > 2) {
      list.remove(0);
      list.remove(list.size() - 1);
      System.out.println(list);
      
    //  System.out.println("List after removing first and last eliment:-\n" + list);
    }
      System.out.println(list);
  }

}