将数据插入未知长度的java数组
我正在为收据制作程序,由于有多个项目,数组长度未知。这是我的代码:将数据插入未知长度的java数组,java,drjava,Java,Drjava,我正在为收据制作程序,由于有多个项目,数组长度未知。这是我的代码: public static void main (String str[]) throws IOException { Scanner scan = new Scanner (System.in); //Entering Input int mult = 1; double price = 0; double y = 0; int l = 1; double [] list
public static void main (String str[]) throws IOException {
Scanner scan = new Scanner (System.in);
//Entering Input
int mult = 1;
double price = 0;
double y = 0;
int l = 1;
double [] list = new double[l];
while(mult != 0){
if (mult != 0)
System.out.println("Please Enter the Cost of the Item: ");
y = scan.nextDouble();
list[l]= y;
l++;
System.out.println("More than one item? (1 = yes 0 = no) ");
mult = scan.nextInt();
if (mult != 0)
price += y;
}
当我运行它时,我输入项目的成本并得到一个错误。如果我是你,我会使用数组列表。它是一种可以使用的动态数据结构,而不是必须定义元素数量的典型数组。您可以执行以下操作:
ArrayList<Double list = new ArrayList<Double>();
list.add(y);
ArrayList没有长度未知的数组。Java中任何数组(任何类型)都有字段长度
但实际上这不是你的问题;因为您根本没有使用传递给方法的数组。本质上,您要问的是如何对未知大小的输入使用数组
有两个答案:
正如BlackHatSamurei所建议的,您可以使用List number=new ArrayList()
-在添加其他元素时动态增长的现有类[您一直在使用这些类,并且只有在实例化具体对象时才使用特定的ArrayList实现]
如果这是关于学习的:您可以实现自己版本的列表。含义:您创建了一个使用数组存储数据的类,并且每当您想要添加数组可以容纳的更多元素时;创建一个新的、更大的数组,并将所有数据复制到该数组中
ArrayList
正如其他人所建议的,你应该使用,特别是,更具体地说是
普通数组的长度是固定的。它不生长也不收缩。若要添加超出其容量的项,请创建一个新的更大数组,并复制现有项和新项,最后删除原始数组。ArrayList
由数组支持,但可以增长。实际上,备份阵列实际上并没有增长,它处理我刚才代表您提到的细节:监视阵列以检测何时已满,然后创建一个新阵列,复制项目
如果这是家庭作业,你的指导老师可能希望你了解这个琐事的细节,在这种情况下,我给你的答案是:创建一个新数组,复制项目,添加新项目,替换原始数组
要使用集合
(请参见),您需要继续使用实际对象。Java有原语来帮助程序员从C编程过渡,但类和对象才是Java真正的意义所在。相当于double
原语的类为
错误是什么?您可以使用ArrayList
保存长度未知的数据。是的,您应该使用ArrayList
。
List<Double> costs = new ArrayList<>();
// … get your inputs from user and add each price-item to list …
costs.add ( y );
List<BigDecimal> costs = new ArrayList<>();
…
BigDecimal bd = new BigDecimal( userInputString ) ; // Input might be: 1.23
costs.add( bd );