Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将用户输入添加到ArrayList中,直到关键字触发它停止?_Java_Arraylist_Java.util.scanner - Fatal编程技术网

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

Java 如何将用户输入添加到ArrayList中,直到关键字触发它停止?,java,arraylist,java.util.scanner,Java,Arraylist,Java.util.scanner,因此,我试图编写一个Java程序,允许用户在命令行中输入单词。当用户输入“停止”时,程序应停止接受单词。将单词存储在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 IOExcept

因此,我试图编写一个Java程序,允许用户在命令行中输入单词。当用户输入“停止”时,程序应停止接受单词。将单词存储在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());
       }
   }

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

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

}
然后,删除列表中存储的第一个和最后一个单词,但仅当列表的长度大于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());
       }
   }

}
import java.io.*;
导入java.util.ArrayList;
导入java.util.Scanner;
公共课t2_第1课\u模板{
公共静态void main(字符串str[])引发IOException
{
ArrayList=新建ArrayList();
扫描仪扫描=新扫描仪(System.in);
做
{
System.out.println(“您想向列表中添加什么?”);
字符串输入=scan.nextLine();
列表。添加(输入);
}
while(scan.nextLine()!=“停止”);
if(list.size()<2)
{
系统输出打印项次(列表);
System.out.println(list.size());
}
其他的
{
列表。删除(0);
list.remove(list.size()-1);
系统输出打印项次(列表);
System.out.println(list.size());
}
}
}
它不断提示问题,但从不识别何时输入“停止”。如果有人能帮我找出问题所在,那会很有帮助的。谢谢大家!

更改
scan.nextLine()!=在(!scan.nextLine().equalsIgnoreCase(“停止”))时将“停止”
切换到
并尝试

原因:

字符串文字
“STOP”
将与从键盘输入的字符串值
“STOP”
不同(在您的情况下)<代码>=
比较引用。您必须检查两个非引用字符串的值。

第行:

scan.nextLine() != "STOP"
比较对两个对象的引用。如果需要比较对象,应该使用对象的equals()方法

阅读中的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.*;
导入java.util.ArrayList;
导入java.util.Scanner;
公共课t2_第1课\u模板{
公共静态void main(字符串str[])引发IOException{
ArrayList=新建ArrayList();
扫描仪扫描=新扫描仪(System.in);
System.out.println(“您想向列表中添加什么?”);
字符串输入=scan.nextLine();
而(!input.equals(“STOP”){//使用equals(Object o)方法比较字符串
列表。添加(输入);
System.out.println(“您想向列表中添加什么?”);
输入=scan.nextLine();
}
System.out.println(“列表大小=“+list.Size());
System.out.println(“输入列表:-\n”+列表);
如果(list.size()>2){
列表。删除(0);
list.remove(list.size()-1);
System.out.println(“删除第一个和最后一个删除项后的列表:-\n”+列表);
}
}
}
导入java.io.*;
导入静态java.lang.System.*;
导入java.util.Scanner;
导入java.lang.Math;
导入java.util.ArrayList;
公共课U7\U L1\U活动\U一{
公共静态void main(字符串str[])引发IOException{
ArrayList=新建ArrayList();
扫描仪扫描=新扫描仪(System.in);
System.out.println(“请输入单词,输入STOP以停止循环”);
字符串输入=scan.nextLine();
而(!input.equals(“STOP”){//使用equals(Object o)方法比较字符串
列表。添加(输入);
输入=scan.nextLine();
}
System.out.println(list.size());
系统输出打印项次(列表);
//System.out.println(“列表大小=“+list.Size());
//System.out.println(“输入列表:-\n”+列表);
如果(list.size()>2){
列表。删除(0);
list.remove(list.size()-1);
系统输出打印项次(列表);
//System.out.println(“删除第一个和最后一个删除项后的列表:-\n”+列表);
}
系统输出打印项次(列表);
}
}

不要使用==比较字符串。使用相等的可重复复制的“谢谢”,这似乎是可行的,但是当我试图打印出ARARYLIST时,在最后的结尾,它只打印出了在ARARYLIST中间的元素。你知道为什么会这样吗?没关系,下面的评论解释了我做错了什么。谢谢你!啊,这解释了为什么输出都搞砸了;谢谢你的洞察力!