下面是我的Java程序?,F在,程序正確運行的唯一方法是讓最后一列最長。如果數組中的最后一列不是最長的,則輸出不正確。例如,如果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
提交
取消