Поэтому я пытаюсь написать программу 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"
вы сравниваете ссылки на два объекта. Если вам нужно сравнить объекты, вы должны использовать метод equals() объекта Object.
Читайте о 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();
}
Измените scan.nextLine() != "STOP"
до while(!scan.nextLine().equalsIgnoreCase("stop"));
и попробовать.
Причина:
Строковый литерал "STOP"
не будет таким же, как значение String "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);
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);
}
}
}