我只需要找到一种方法来验证输入,以便如果第一个数组输入(主队)丢失,它会显示消息“没有输入主队”。
示例输入=“埃弗顿 : 利物浦 : 1 : 1” 缺少主队示例“:利物浦:1:1”
正如你所看到的,我的尝试如下,我不知道如何解决这个问题:
if (stats.get(i)[0] == null){
System.out.println("no home team name entered");
}
这是我的完整代码:
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
ArrayList<String[]> stats = new ArrayList<>(); //initialize a container to hold all the stats
System.out.println("please enter match results:");
while(sc.hasNextLine())
{
String input = sc.nextLine();
String[] results = input.split(" : ");
if(results.length == 4)
{
stats.add(results);
}
else if(input.equals("stop"))
break;
else
System.out.println("Error reading input");
}//end of while
for(int i = 0; i < stats.size(); i++)
{
if (stats.get(i)[0] == null){
System.out.println("no home team name entered");
}
try{
System.out.println(stats.get(i)[0] + " " + Integer.valueOf(stats.get(i)[2]) + " : " +
Integer.valueOf(stats.get(i)[3]) + " " + stats.get(i)[1]);
}catch (Exception e) {
//do nothing with any invalid input
}
}
}
最佳答案
分割数组将第一个元素创建为空字符串 - 而不是空字符串。
因此您需要将 stats.get(i)[0] == null
更改为 stats.get(i)[0].isEmpty()
您还可以添加 trim()
,以便首先删除任何多余的空格,或者将拆分正则表达式更改为 \\s+:\\s+
,这然后匹配冒号两侧 1 次或多次 出现的空格。
如果您想考虑输入数据可能没有空格的情况,那么您可以将拆分正则表达式字符串更改为 \\s*:\\s*
,然后匹配 <冒号两侧出现strong>0 次或多次 空格。
关于Java ArrayList - 检查元素是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44791737/