尝试循环到for循环时出现问题。我想要做的是我有一个列表来存储食物清单。然后,我让用户选择是否(1)然后快餐其他(2)然后日本食物。之后我尝试设置foodType:
int foodOption;
Scanner sc = new Scanner(System.in);
List<String> foodList = new ArrayList<>(Arrays.asList("KFC", "Sushi"));
foodOption = sc.nextInt();
for (int j = 0; j < foodList.size(); j++) {
if (j == foodOption) {
foodType = foodList.get(j);
System.out.println("Testing;" + foodType);
}
}
然而,当我尝试打印出foodType时,它没有显示任何内容。有任何想法吗?提前谢谢。
答案 0 :(得分:0)
这一切都取决于你输入的内容。不要忘记数组将从索引0
开始,这意味着如果你输入大于1
的数据,你将无法获得任何输出。
在你的List<String> foodList
中,你有两个要素;它们位于0 = KFC
点和1 = Sushi
点。
当您执行if( j == foodOption )
时,如果用户未输入0
或1
,那么您将永远不会看到输出,因为List
答案 1 :(得分:0)
数组和列表索引从零开始。你的列表大小为2,这意味着它拥有的最大索引是1.这就是当foidOption
为2时你看不到任何输出的原因。当你输入1时,你应该得到&# 34;寿司&#34;在输出中。
另请注意,循环完全没必要。您可以将其删除,只需改为if(foodOption < list.size) foodType = foodList.get(foodOption)
。
答案 2 :(得分:-1)
将类型<String>
添加到ArrayList声明。
List<String> foodList = new ArrayList<String>(Arrays.asList("KFC", "Sushi"));
此外,ArrayList的索引从0开始。因此,输入&#39; 2&#39;由于您的Scanner
输入不会返回值,因为它不在数组索引之内(0 =&#39; KFC&#39;,1 =&#39; Sushi&#39;)。 / p>