public static void getVegetableFromUser()
{
String[] veg = SandwichDB.getVegetable();
HashMap<String, String> getMapVegPrice = SandwichDB.getMapVegPrice();
int vegSave = Validator.getInt(Scanner, "Select Vegetables [1, 8]: ", 1, 8);
String v = veg[vegSave-1];
sandwich.setVegetables(v);
}
好的,所以控制台打印出来
===选择三明治蔬菜===
1个红洋葱$ 0.10
2橄榄$ 0.10
3个咸菜$ 0.10
4生菜$ 0.20
5青椒$ 0.25
6个西红柿$ 0.30
7个奶酪$ 0.49
8退出蔬菜科
选择蔬菜[1,8]:
我的想法是能够挑选多种蔬菜,直到我选择8即退出蔬菜部分。我怎么能这样做?使用else-if语句?
此外,蔬菜应该是一个数组,而不是一个字符串...就像在这一行:String v = veg[vegSave-1]
。
这是我的SandwichDB.app上的代码:
public static String[] getVegetableInfo()
{
ArrayList<String> vegsList = new ArrayList<>();
try (BufferedReader in =
new BufferedReader(
new FileReader("vegetable.txt")))
{
String line = in.readLine();
while (line != null)
{
String[] elems = line.split("~");
vegsList.add(elems[0] + " $" + elems[1]);
line = in.readLine();
}
vegsList.add("Quit Vegetable Section");
}
catch(IOException e)
{
System.out.println(e);
return null;
}
String[] vegetableInfo = vegsList.toArray(new String[]{});
return vegetableInfo;
}
答案 0 :(得分:1)
这将有助于查看其余代码,但根据您发布的内容,我会认为您正在获取arrayOutOfBoundsException,因为您正在尝试获取有关不存在的蔬菜的信息。尝试添加“if”以检查在执行此行之前是否选择了8:
String v = veg[vegSave-1];
也许试试:
if(vegSave == 8){
//TODO: Add code that quits vegetable section
} else {
String v = veg[vegSave-1];
}
这样,如果选择了8,程序就不会尝试将String v设置为等于蔬菜。
希望这会有所帮助,我不太确定你想要什么。 (例如,“也是蔬菜假设是一个数组而不是像这一行的字符串字符串v = veg [vegSave-1]。”问题或陈述?)