Java-无法将用户输入注入空数组(用于注册产品的基于文本的应用程序)

Java-无法将用户输入注入空数组(用于注册产品的基于文本的应用程序),java,arrays,Java,Arrays,我正在尝试开发一个基于文本的应用程序,用于使用数组注册和列出项目,但在创建一个空数组并在其中“注入”信息方面,我并没有成功。你能帮我吗?当我选择选项1时,它会在线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 在AppTrabFinal.main(AppTrabFinal.java:38)”上。我知道它与空数组有关,但我的老师没有教我们如何在没有预先确定长度的情况下构建一个空数组,我自己也做不到这一点。提前谢谢 import java

我正在尝试开发一个基于文本的应用程序,用于使用数组注册和列出项目,但在创建一个空数组并在其中“注入”信息方面,我并没有成功。你能帮我吗?当我选择选项1时,它会在线程“main”java.lang.ArrayIndexOutOfBoundsException中出现异常:0 在AppTrabFinal.main(AppTrabFinal.java:38)”上。我知道它与空数组有关,但我的老师没有教我们如何在没有预先确定长度的情况下构建一个空数组,我自己也做不到这一点。提前谢谢

import java.util.Scanner;

public class AppTrabFinal {
public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);
    int i, option;
    String[] items = {};
    double[] prices = {};

    System.out.printf("Welcome to the Yellow Submarine store. What would you like to do?\n");

    do {
        System.out.println("\n========= Option Menu =========");
        System.out.println("1 – Register a product");
        System.out.println("2 – List your products");
        System.out.println("3 – Exit");
        System.out.println("==================================\n");
        System.out.println("Choose an option: ");

        option = entrada.nextInt();

        switch (option) {
            case 1:
                for(i = 0; i < 10; i++) {
                    System.out.println("\nType the name of the product you would like o register: ");
                    items[i] = entrada.nextLine();
                    System.out.println("Enter it's price: ");
                    prices[i] = entrada.nextDouble(); 
                }     
                break;
            case 2:
                for(i = 0; i > 0; i++) {
                    System.out.println(items[i+1]);
                }   
                break;
            case 3:
                System.out.println("\nLogging out. Thank you for using our app.");
                break;
            default:
                System.out.println("Invalid option, try a different number.");
                break;
        }       
    } while (option != 3); 
  }  
}
import java.util.Scanner;
公开课期末考试{
公共静态void main(字符串[]args){
Scanner entrada=新扫描仪(System.in);
int i,选项;
字符串[]项={};
双[]价格={};
System.out.printf(“欢迎来到黄色潜水艇商店。您想做什么?\n”);
做{
System.out.println(“\n================选项菜单===========”);
System.out.println(“1-注册产品”);
System.out.println(“2–列出您的产品”);
系统输出打印项次(“3-退出”);
System.out.println(“===================================================================\n”);
System.out.println(“选择一个选项:”);
option=entrada.nextInt();
开关(选件){
案例1:
对于(i=0;i<10;i++){
System.out.println(“\n键入要注册的产品名称:”;
items[i]=entrada.nextLine();
System.out.println(“输入它的价格:”);
价格[i]=entrada.nextDouble();
}     
打破
案例2:
对于(i=0;i>0;i++){
系统输出打印项次(项目[i+1]);
}   
打破
案例3:
System.out.println(“\n注销。感谢您使用我们的应用。”);
打破
违约:
System.out.println(“无效选项,请尝试其他号码。”);
打破
}       
}while(选项!=3);
}  
}

数组始终需要预定的长度。相反,您可以使用可以增长的
ArrayList
。考虑下面的代码示例:

List<Integer> list = new ArrayList<Integer>();
list.append(42);
list.append(84);
// The list now contains: [42, 82]
list.get(0); // Returns 42
List List=new ArrayList();
列表。追加(42);
列表。追加(84);
//该列表现在包含:[42,82]
list.get(0);//返回42

您正在初始化
字符串[]项={};双[]价格={}无元件,即容量为
0
。因为数组的大小是固定的

因此,如果您从代码中知道数组的最大大小,它似乎是
10
,则按如下方式初始化:

String[] items = new String[10];
double[] prices = new double[10];
如果不确定最大大小,则可以使用从索引
0
开始的
ArrayList
,它只接受
对象。因此,您需要使用包装类,例如
int
use
ArrayList

你可以读更多