Java中不使用数组等高级结构,如何用单个变量存储多组键盘输入
只用字符串拼接+substring实现姓名收集与输出
嘿,这个问题其实超容易解决——你完全不需要数组或者复杂数据结构,只用一个普通的字符串变量就能搞定所有姓名的存储!核心思路就是逐步拼接字符串,再用substring处理掉多余的分隔符就行,我给你拆解下具体怎么做:
核心逻辑步骤
- 初始化一个空字符串,用来累积所有输入的姓名。
- 进入循环,持续请求用户输入。
- 每次拿到输入后先判断:
- 如果输入是
hi,直接退出循环。 - 如果是有效姓名(非空、非hi),就把它拼接到累积字符串里——这里可以先加逗号再加姓名,避免每次判断是否是第一个元素。
- 如果输入是
- 循环结束后,用
substring去掉累积字符串开头多余的逗号(如果有输入的话),最后输出结果。
代码示例(Java版)
import java.util.Scanner; public class NameCollector { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String nameList = ""; while (true) { System.out.print("请输入姓名(输入hi退出):"); String input = scanner.nextLine().trim(); // 触发退出条件 if ("hi".equalsIgnoreCase(input)) { break; } // 跳过空输入,避免无效条目 if (input.isEmpty()) { System.out.println("请输入有效的姓名哦!"); continue; } // 拼接逗号和当前姓名 nameList = nameList + "," + input; } // 处理并输出结果 if (nameList.length() > 0) { // 去掉开头的第一个逗号 System.out.println("所有输入的姓名:" + nameList.substring(1)); } else { System.out.println("没有输入任何姓名~"); } scanner.close(); } }
代码示例(Python版)
如果用Python的话,切片操作就相当于substring,逻辑完全一致:
name_list = "" while True: input_name = input("请输入姓名(输入hi退出):").strip() if input_name.lower() == "hi": break if not input_name: print("请输入有效的姓名哦!") continue name_list = f"{name_list},{input_name}" # 去掉开头的逗号(如果有内容的话) if len(name_list) > 0: print(f"所有输入的姓名:{name_list[1:]}") else: print("没有输入任何姓名~")
为什么这个方法可行?
字符串本身就是字符序列,每次拼接都是把新的内容追加到已有字符串的末尾。我们先加逗号再加姓名的方式,不用额外判断是否是第一个输入的姓名,最后只需要用substring(或Python切片)去掉开头的多余逗号,就能得到完美的逗号分隔格式。完全符合你“只用substring和循环”的要求!
内容的提问来源于stack exchange,提问作者user9565583
相关产品推荐
相关产品推荐

