You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何用拼接字符串定义变量?循环存储输入方案咨询

可行实现方案及优化建议

Java是静态类型语言,编译阶段就确定了所有变量的名称,你想用字符串拼接出的动态名字当变量名,这在Java里根本行不通——编译器根本不认这种“临时凑出来”的变量名。下面给你几种靠谱的实现方式:

1. 使用数组存储

如果你的学生序号是连续的数字,用数组是最直接高效的方式:

import java.util.Scanner;

public class StudentDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int studentCount = 3; // 假设要存储3个学生的姓名
        String[] studentNames = new String[studentCount];

        for (int i = 0; i < studentCount; i++) {
            System.out.print("请输入第" + (i+1) + "个学生的姓名:");
            studentNames[i] = scanner.nextLine();
        }

        // 验证存储结果
        for (int i = 0; i < studentCount; i++) {
            System.out.println("student" + (i+1) + "Name: " + studentNames[i]);
        }
        scanner.close();
    }
}

数组通过索引直接访问,性能高、内存开销小,适合序号连续的场景。

2. 使用HashMap存储

如果需要严格对应student1Name这类字符串作为标识,HashMap可以满足需求:

import java.util.HashMap;
import java.util.Scanner;

public class StudentDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int studentCount = 3;
        HashMap<String, String> studentMap = new HashMap<>();

        for (int i = 0; i < studentCount; i++) {
            String key = "student" + (i+1) + "Name";
            System.out.print("请输入" + key + ":");
            studentMap.put(key, scanner.nextLine());
        }

        // 验证存储结果
        System.out.println(studentMap.get("student1Name"));
        System.out.println(studentMap.get("student2Name"));
        scanner.close();
    }
}

这种方式可以灵活定义键名,哪怕以后键的规则变了也容易调整,但访问速度略低于数组。

3. 面向对象封装(推荐优化方案)

如果你的学生信息不止姓名,或者以后可能扩展其他属性(比如年龄、学号),直接封装成Student类是更专业的做法:

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

class Student {
    private int id;
    private String name;

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }

    // 可按需添加getter/setter方法
    public String getName() {
        return name;
    }

    public int getId() {
        return id;
    }
}

public class StudentDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int studentCount = 3;
        List<Student> students = new ArrayList<>();

        for (int i = 0; i < studentCount; i++) {
            System.out.print("请输入第" + (i+1) + "个学生的姓名:");
            String name = scanner.nextLine();
            students.add(new Student(i+1, name));
        }

        // 验证存储结果
        for (Student student : students) {
            System.out.println("student" + student.getId() + "Name: " + student.getName());
        }
        scanner.close();
    }
}

这种方式符合面向对象的设计思想,代码可读性、扩展性更强,后续添加新属性或方法都很方便。


内容的提问来源于stack exchange,提问作者JMonster18

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 12:10:36