Java中如何为同类型就餐人员创建独立变量?点餐场景难题
解决多就餐人员的变量存储问题
我正试图解决如何创建新变量的问题。当输入为2(代表2名青少年)且两人均点餐时,总金额仅会保留最后一名青少年的点餐金额,因为所有青少年的点餐金额都被存储在同一个变量中。我想了解在餐厅有多名同类型就餐人员的情况下,如何创建新的独立变量。相关代码片段如下:
import java.util.Scanner; public class Lab9 { public static void main(String[] args) { Scanner input = new Scanner(System.in); // Variables and code logic here... } }
嘿,我完全get到你的问题了——你现在用单个变量存所有青少年的点餐金额,每次新输入都会覆盖之前的值,最后自然只剩最后一个人的金额。其实根本不用手动创建一堆独立变量(那样太死板,人数变了还要改代码),咱们用数组或者集合来存储多个人的金额就好,这是处理这类重复数据的标准操作。
方案1:用数组实现(适合提前知道人数的场景)
如果能先获取就餐人数,直接创建对应长度的数组,就能逐个存储每个人的金额:
import java.util.Scanner; public class Lab9 { public static void main(String[] args) { Scanner input = new Scanner(System.in); // 先获取青少年人数 System.out.print("请输入青少年人数:"); int teenCount = input.nextInt(); // 创建对应长度的数组,专门存每个青少年的点餐金额 double[] teenAmounts = new double[teenCount]; // 循环输入每个青少年的金额 for (int i = 0; i < teenCount; i++) { System.out.print("请输入第" + (i+1) + "名青少年的点餐金额:"); teenAmounts[i] = input.nextDouble(); } // 计算总金额 double total = 0; for (double amount : teenAmounts) { total += amount; } System.out.println("所有青少年的点餐总金额为:" + total); input.close(); } }
方案2:用ArrayList实现(更灵活的动态场景)
如果人数不确定,或者后续可能临时添加就餐人员,用ArrayList会更方便——它的长度可以动态调整,不用提前固定:
import java.util.Scanner; import java.util.ArrayList; public class Lab9 { public static void main(String[] args) { Scanner input = new Scanner(System.in); ArrayList<Double> teenAmounts = new ArrayList<>(); // 先获取青少年人数,也可以改成循环输入直到用户主动结束 System.out.print("请输入青少年人数:"); int teenCount = input.nextInt(); for (int i = 0; i < teenCount; i++) { System.out.print("请输入第" + (i+1) + "名青少年的点餐金额:"); double amount = input.nextDouble(); teenAmounts.add(amount); // 把金额添加到集合里 } // 计算总金额 double total = 0; for (double amount : teenAmounts) { total += amount; } System.out.println("所有青少年的点餐总金额为:" + total); input.close(); } }
为啥不推荐手动创建多个独立变量?
比如你写teen1Amount、teen2Amount...这类变量,一旦人数变成3、5甚至更多,你就得手动加新变量、改计算逻辑,代码会变得臃肿又难维护。用数组或集合的话,不管人数多少,核心逻辑都不用大改,扩展性强太多啦。
内容的提问来源于stack exchange,提问作者MGA
相关产品推荐
相关产品推荐

