新手求助:如何在for循环中按序号询问并存储客户姓名
解决for循环中显示客户编号并读取姓名的问题
嘿,我来帮你搞定这个编程小问题!你的代码里有几个关键的小错误,咱们一步步修正:
你的代码里的核心问题
- 循环条件完全错误:你写的
for (int i = 1; i == arraySize; i++)只会在i刚好等于arraySize时执行一次,但i初始值是1,除非arraySize也是1,否则这个循环根本不会运行。正确的条件应该是让i从1一直走到arraySize,也就是i <= arraySize。 - 客户编号显示错误:你打印的是
arraySize,这会导致不管循环多少次,都显示同一个数字(比如数组长度是3的话,一直显示customer#3),应该用循环变量i来对应递增的编号。 - 缺少输入读取逻辑:你只输出了提示,但没把用户输入的姓名存到数组里,等于白问啦~
修正后的完整代码
import java.util.Scanner; public class CustomerInput { public static void main(String[] args) { int arraySize = 3; // 这里可以换成你需要的任意数组大小 String[] dinerArray = new String[arraySize]; Scanner scanner = new Scanner(System.in); // 从1开始循环,覆盖所有客户编号 for (int i = 1; i <= arraySize; i++) { System.out.println("Enter the name of customer #" + i + ": "); // 数组索引从0开始,所以用i-1对应正确的存储位置 dinerArray[i - 1] = scanner.nextLine(); } // 验证输入结果(可选) System.out.println("\n你输入的客户名单:"); for (int i = 0; i < dinerArray.length; i++) { System.out.println("Customer #" + (i + 1) + ": " + dinerArray[i]); } scanner.close(); } }
额外说明:另一种常用的循环写法
很多Java开发者习惯从0开始写循环(因为数组索引本身是0起始的),这种写法不需要i-1,只需要显示编号的时候加1就行:
for (int i = 0; i < arraySize; i++) { System.out.println("Enter the name of customer #" + (i + 1) + ": "); dinerArray[i] = scanner.nextLine(); }
两种写法都能达到你的需求,选你觉得顺手的就行~
内容的提问来源于stack exchange,提问作者Sue
相关产品推荐
相关产品推荐

