Java 从arraylist中删除空格

Java 从arraylist中删除空格,java,arraylist,Java,Arraylist,我刚刚开始学习计算机科学,我们刚刚开始我们的第一个Java项目。这是一个信息系统,应该可以跟踪我们的朋友 我制作了一个arraylist,在这里我可以加入一些我们朋友的兴趣爱好。问题是我可以很容易地输入空格,只需按enter键就可以在数组列表中插入一个“空”元素。我尝试过使用不同的方法将它们从数组列表中删除,但没有找到答案。下面是我一直使用的代码 当我进入“退出”时,我已经将程序设置为退出,这非常好。在开始时,当我键入“exit”时,程序会将“exit”包含到数组中,但是在我添加了checkli

我刚刚开始学习计算机科学,我们刚刚开始我们的第一个Java项目。这是一个信息系统,应该可以跟踪我们的朋友

我制作了一个arraylist,在这里我可以加入一些我们朋友的兴趣爱好。问题是我可以很容易地输入空格,只需按enter键就可以在数组列表中插入一个“空”元素。我尝试过使用不同的方法将它们从数组列表中删除,但没有找到答案。下面是我一直使用的代码

当我进入“退出”时,我已经将程序设置为退出,这非常好。在开始时,当我键入“exit”时,程序会将“exit”包含到数组中,但是在我添加了
checklist()
方法之后,我能够将“exit”保留在数组列表之外。我似乎无法让它与空间和入口一起工作

package testing;

import java.util.ArrayList;
import java.util.Scanner;

public class Test {

public static void main(String[] args) {
    ArrayList<String> interests = new ArrayList<String>();
    String interest;
    String quit = "exit";
    do {
        Scanner userInput =  new Scanner(System.in);
        System.out.println("Write interest: ");
        interest = userInput.nextLine();
        if (interest.isEmpty()) { // Makes sure you cant press ENTER.
            System.out.println("You just entered SPACE, please write an interest: ");
            interest = userInput.nextLine();
        }  else if (interest.isBlank()) { // Makes sure you cant enter a plain space.
            System.out.println("You just entered a plain space, please write an interest: ");
            interest = userInput.nextLine();
        }
        interests.add(interest);
    } while (!interest.equals(quit));
    checkList(interests);
    System.out.println(interests);
}

public static void checkList(ArrayList<String> interests) {
    String quit = "exit";
    for (int i = 0; i < interests.size(); i++) {
        if(interests.get(i).isBlank()) {                
            interests.remove(i);
            System.out.println("Position: " + i + " is a blank space");
            System.out.println("Removed blank space: " + interests.get(i));
        } else if (interests.get(i).isEmpty()) {
            interests.remove(i);
            System.out.println("Position: " + i + " is a ENTER");
            System.out.println("Removed ENTER: " + interests.get(i));
        } else if (interests.get(i).equals(quit)) {
            interests.remove(i);
        }
    }
}

}
封装测试;
导入java.util.ArrayList;
导入java.util.Scanner;
公开课考试{
公共静态void main(字符串[]args){
ArrayList兴趣=新建ArrayList();
串利息;
String quit=“退出”;
做{
扫描仪用户输入=新扫描仪(System.in);
System.out.println(“写入利息:”);
兴趣=userInput.nextLine();
if(interest.isEmpty()){//确保不能按ENTER键。
System.out.println(“您刚输入空格,请写一个兴趣:”);
兴趣=userInput.nextLine();
}else if(interest.isBlank()){//确保不能输入纯空格。
System.out.println(“您刚刚输入了一个空白,请写一个兴趣:”);
兴趣=userInput.nextLine();
}
利息。加上(利息);
}而(!interest.equals(quit));
检查表(利益);
系统输出打印(利息);
}
公共静态无效检查表(ArrayList利益){
String quit=“退出”;
for(int i=0;i
我不熟悉Java。 但我认为最好的方法是阻止来自空白空间的输入。 因此,用户需要将数据输入数组。
只要检查字符串是否为null | | empty

我已经找到了问题的答案。解决方案是使用此方法,而不是使用方法
checkList()


看看下面我的答案。这就是解决方案。仅使用String.isEmpty()检查是不够的。如果所讨论的字符串长度为零,则该方法返回true。如果有人进入“”,这是一个单独的空间,因此不是空的,该怎么办?这正是OP抱怨的情况。那么“\t\t\t”或“\n\t\n”呢?这些都不是空的,但它们是空白,它们会破坏程序。在回答关于你缺乏熟练程度的语言的问题时要小心,因为在你所熟悉的语言中,情况可能不一样。此外,这个网站上的答案应该是确定的。请不要猜。String.trim()更好。对照制表符和换行符检查您的解决方案。
interests.removeAll(Arrays.asList("", null, " ", "exit"));