我正在尝试在增加数组大小的同时添加数组内的总销售额。我在代码中做了错误的事情还是一切都错了?
我是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);
}