在 Java 中向数组添加值,同时增加数组的大小



我正在尝试在增加数组大小的同时添加数组内的总销售额。我在代码中做了错误的事情还是一切都错了?

我是Java的初学者,刚刚开始学习方法和类,所以任何建议都会有所帮助。

do {
counter++;
System.out.println(trans.length);
System.out.println(counter);
System.out.println("How many CD/s would you like to buy?");
cd = scan.nextInt();
double cd_sales = sales(cd, CD_PRICE, HST);
System.out.println("How many DVD/s would you like to buy?");
dvd = scan.nextInt();
double dvd_sales = sales(dvd, DVD_PRICE, HST);
double cart = cd + dvd;
double total_sales;
if (cart > 7) {
total_sales = total(cd_sales, dvd_sales, discount);
System.out.println(total_sales);
counter++;
} else if (cart > 14) {
total_sales = total(cd_sales, dvd_sales, sup_discount);
System.out.println(total_sales);    
counter++;
} else {
total_sales = cd_sales + dvd_sales;
System.out.println(total_sales);
counter++;
}
for (int i=0;i<trans.length;i++){ 
trans[0]=total_sales;
System.out.println(trans.length); 
double[] newtrans = Arrays.copyOf(trans, counter+1);
newtrans[counter]=trans[0];
System.out.println(Arrays.toString(newtrans));
}
//double sum=Arrays.stream(trans).sum();
System.out.println("New Customer? Y/N");
ans = scan.next().charAt(0);
} while ((ans == 'Y') && (ans != 'N') || (ans == 'y') && (ans != 'n'));

考虑到您的代码片段,for循环对我来说很可疑。可能,您只需要用这 2 行替换它:

double[] newtrans = Arrays.copyOf(trans, counter+1);
newtrans[counter] = total_sales;

但是,除非强制使用数组作为数据结构,否则请考虑使用 ArrayList。ArrayList的全部目的是使阵列大小可重新调整。

此外,如果您知道预期大小并希望最小化调整大小,则可以选择创建具有初始容量的ArrayList

List<Double> trans = new ArrayList<>(100);

感谢您的所有帮助!我设法通过使用 ArrayList 并修复我的 for 循环来获得我想要的输出。这是执行我想要的代码

for(int i=0;i<trans.length;i++){
newtrans.add(i, total_sales);
}

最新更新