【发布时间】:2018-09-02 20:17:10
【问题描述】:
下面是我的 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 food
Your favorite food is Chicken
另外,如果输入是biscuit,那么输出是这样的:
Yo have no favorite food
Yo 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");
}
}
}
}
}
谢谢!
【问题讨论】:
-
你能解释一下你的问题吗?不清楚。
-
请阅读minimal reproducible example并相应地完善您的问题。
-
我试图编辑问题以便更容易理解。我添加的示例基于我自己对 OP 代码的测试。
标签: java arrays for-loop if-statement user-input