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

How to add user input into an ArrayList until a keyword triggers it to stop?

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

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

然后,删除存储在列表中的第一个和最后一个单词,但前提是列表的长度大于两个。最后转载榜单内容

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());
       }
   }

}

它一直在提示问题,但从不识别何时输入"STOP"。如果有人可以帮我弄清楚出了什么问题,那会很有帮助。谢谢!

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

原因:

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

行内:

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();
}

试试下面的代码:-

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);
    }
  }

}
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);
  }

}