下面是我的Java程序。现在,程序正确运行的唯一方法是让最后一列最长。如果数组中的最后一列不是最长的,则输出不正确。例如,如果food数组在第二列中的元素比第三列中的元素多,如下所示:String[][] food = { {"Bannana", "Apple", "Pear", "Orange"}, // fruits {"GreenBean", "Iceburg", "Spenach", "peas", "carrots", "potatoes", "beans"}, // vegetables {"Steak", "Baccon", "Beef", "TurkeyB", "TurkeyBacon", "Chicken"} // meats };然后,例如,如果chicken输入作为输入,则输出是这样的:Yo have no favorite foodYour favorite food is Chicken而且,例如,如果输入是biscuit,那么输出是这样的:Yo have no favorite foodYo have no favorite food那么,有没有办法只打印"Yo have no favorite food"一次或正确打印出最喜欢的食物,而最后一列不必最长?这是代码:package com.begg;import java.util.*;public class List { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { String[][] food = { {"Bannana", "Apple", "Pear", "Orange"}, // fruits {"GreenBean", "Iceburg", "Spenach", "peas"}, // vegetables {"Steak", "Baccon", "Beef", "TurkeyB", "TurkeyBacon", "Chicken"} // meats }; for(int row = 0; row < food.length; row++) { for (int col = 0; col < food[row].length; col ++) { System.out.print(food[row][col] + ", "); } System.out.println(); } System.out.println("Enter your favorite out of the options above:"); String k = sc.next(); loop2: for(int row2 = 0; row2<food.length; row2++) { for (int col2 = 0; col2< food[row2].length; col2++) { if (k.equalsIgnoreCase(food[row2][col2])) { System.out.println("Your favorite food is " + food[row2][col2]); break loop2; } else if (!(k.equalsIgnoreCase(food[row2][col2])) & col2== 5 ) { System.out.println("Yo have no favorite food"); } } } }}
2 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
改变这部分:
else if (!(k.equalsIgnoreCase(food[row2][col2])) & col2== 5 ) {
System.out.println("Yo have no favorite food");
}
对此:
else if (!(k.equalsIgnoreCase(food[row2][col2])) && row2 == food.length-1 && col2 == food[row2].length-1) {
System.out.println("Yo have no favorite food");
}
应该做我认为你正在寻找的。编辑else if检查是否已检查数组的所有值(与哪一列更长无关),如果没有与输入匹配,则它将执行System.out.println("Yo have no favorite food");一次。
添加回答
举报
0/150
提交
取消