如何在Java中通过循环打印t1、t2、t3等变量的值
嘿,这个问题其实挺常见的~你现在的代码只是输出了t1、t2、t3这些字符串,要拿到变量的实际值,有几种更合理的实现方式,推荐优先用容器类来存储变量,毕竟Java是静态类型语言,直接靠变量名动态取值可不是常规操作,下面给你几种可行方案:
方案1:使用数组(最直接简单)
把t1、t2、t3放到数组里,循环遍历数组就能轻松拿到对应值,完全符合Java的编码习惯:
public class Teste { public static void main(String[] args) { int t1 = 5; int t2 = 10; int t3 = 30; // 将变量存入数组 int[] tArray = {t1, t2, t3}; for (int i = 0; i < tArray.length; i++) { // 可选:同时打印变量名和对应值 System.out.println("t" + (i+1) + ": " + tArray[i]); } } }
运行后会输出:
t1: 5
t2: 10
t3: 30
这种方式简单高效,后续要加新变量的话,直接修改数组就行,维护成本很低。
方案2:使用List集合(更灵活)
如果需要动态添加/删除变量,用List会比数组更灵活:
import java.util.ArrayList; import java.util.List; public class Teste { public static void main(String[] args) { int t1 = 5; int t2 = 10; int t3 = 30; List<Integer> tList = new ArrayList<>(); tList.add(t1); tList.add(t2); tList.add(t3); for (int i = 0; i < tList.size(); i++) { System.out.println("t" + (i+1) + ": " + tList.get(i)); } } }
方案3:反射(不推荐用于简单场景)
如果你实在不想改动原有的变量定义方式,非要通过变量名动态取值,可以用Java的反射机制,但这种方式复杂、容易出错,性能也差,只适合特殊场景:
public class Teste { // 注意:反射无法获取main方法里的局部变量,所以要把变量改成类的静态成员变量 private static int t1 = 5; private static int t2 = 10; private static int t3 = 30; public static void main(String[] args) { for (int i = 1; i < 4; i++) { try { // 通过反射获取静态变量 java.lang.reflect.Field field = Teste.class.getDeclaredField("t" + i); // 私有变量需要设置可访问权限 field.setAccessible(true); // 静态变量不需要实例,传null即可 int value = field.getInt(null); System.out.println("t" + i + ": " + value); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } } } }
总结
优先用数组或者List,这是Java处理这类问题的常规方案;反射尽量少用,除非真的有特殊需求。
内容的提问来源于stack exchange,提问作者Ayoub Eloumari
相关产品推荐
相关产品推荐

