使用我当前拥有的代码,用户可以一次输入一个炸玉米饼,但是当我运行它时,我将输入第一个炸玉米饼的名称,然后价格自动列出“输入Taco的价格”(从1到10)。如何解决此问题。我有信心在循环时会做错事情。
编码:
import java.util.Scanner;
public class TacoSort {
//Create a constant amount of temperatures
public static int NUMBER_OF_TACOS = 10;
public static int NUMBER_OF_PRICES = 10;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner keyboard = new Scanner(System.in);
System.out.println("Welcome to the taco price sorter! Enter 10 taco names and prices and I'll sort it!");
//Populates array of 10 tacos
//Prompts user to enter name of each taco
String[] tacos = new String[NUMBER_OF_TACOS];
for (int i = 0; i < NUMBER_OF_TACOS+1; i++)
{
System.out.print("Enter the name of taco " + (i+1) + "\n");
tacos[i] = keyboard.nextLine();
//Populates array of 10 prices
//Prompts user to enter price of each taco
double[] prices = new double[NUMBER_OF_PRICES];
for (int j = 0; j < NUMBER_OF_PRICES; j++)
System.out.print("Enter taco's price" + (j+1) + "\n");
System.out.println("\n");
prices[i] = keyboard.nextDouble();
}
}
}
用户输出应类似于:
输入炸玉米饼的名称1
松脆的炸玉米饼
输入炸玉米饼的价格
1.19
输入炸玉米饼的名称2
脆玉米饼
输入炸玉米饼的价格
1.59
输入炸玉米饼的名称3
软炸玉米饼
输入炸玉米饼的价格
1.19
最佳答案
我对炸玉米饼了解不多(开玩笑,我的确是这样),但是我注意到这里有些事情做错了。
首先,您的for循环应为:
for (int i = 0; i < NUMBER_OF_TACOS; i++)
您最初有
i < NUMBER_OF_TACOS + 1
,这将导致索引超出范围异常。其次,您没有正确终止第一个for循环的括号;您缺少花括号。在第二个for循环条件之后,您还缺少起始花括号。
第三,您应该通过循环直到用户输入适当的值并使用类型转换代替
Scanner#nextDouble()
来检查错误的用户输入。最后,您要执行整个第一个循环,然后执行整个第二个循环。如果希望程序在程序中询问Taco#1的名称和价格,然后询问Taco#2的名称和价格,以此类推,则应该在同一循环中询问每个炸玉米饼的名称和价格。
正确的代码如下所示:
import java.util.Scanner;
public class TacoSort {
//Create a constant amount of tacos
public static int NUMBER_OF_TACOS = 10;
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Welcome to the taco price sorter! Enter 10 taco names and prices and I'll sort it!");
//Populates array of 10 tacos
//Prompts user to enter name of each taco
String[] tacos = new String[NUMBER_OF_TACOS];
double[] prices = new double[NUMBER_OF_TACOS]; // NOTE Moved this up from below
for (int i = 0; i < NUMBER_OF_TACOS; i++) // NOTE Fixed off-by-one error
{
System.out.print("Enter the name of taco " + (i+1) + "\n");
tacos[i] = keyboard.nextLine();
System.out.print("Enter taco's price " + (i+1) + "\n");
prices[i] = keyboard.nextDouble(); // TODO Fix this so it checks for non-double input?
} // NOTE Added end-bracket here!
// Consolidated prices loop into taco names loop
// Do something with the list of tacos and prices
}
}
关于java - 如何创建一个数组,提示用户输入炸 Jade 米饼1的名称,然后输入价格1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32745667/