Java字符串多维数组元素展示代码优化咨询
精简优化你的Java代码:从基础改进到面向对象重构
嘿,作为编程新手能写出正常运行的代码已经超棒啦!你的这段代码确实有不少可以精简、优化的空间,我来一步步给你拆解,让代码更简洁、可读性更强还更易维护~
先看原代码的几个小问题
原代码功能没问题,但存在这些可以改进的点:
- 代码挤在一起,格式混乱,读起来费劲
- 用一堆
if-else判断列标题,冗余且不灵活 - 硬编码了循环次数(
i < 4、j < 4),以后数组增减元素还要手动改数字 - 所有逻辑都堆在
main方法里,不符合代码复用的思路
优化步骤1:整理代码格式,让结构一目了然
先把代码的缩进、换行调整好,这是最基础但很重要的一步:
public class Exercise4 { public static void main(String[] args) { String[][] info = { {"010","John","Male","21"}, {"011","Mary","Female","25"}, {"012","Joseph","Male","24"}, {"013","Peter","Male","22"} }; for(int i = 0; i < 4; i++) { for(int j = 0; j < 4; j++) { if(j == 0) { System.out.print("ID: "); } else if(j == 1) { System.out.print("Name: "); } else if(j == 2) { System.out.print("Gender: "); } else if(j == 3) { System.out.print("Age: "); } System.out.println(info[i][j]); } System.out.println(); } } }
优化步骤2:用标题数组替换冗余的if-else
把列标题存在一个数组里,直接通过索引取对应标题,省去一堆判断:
public class Exercise4 { public static void main(String[] args) { String[] headers = {"ID: ", "Name: ", "Gender: ", "Age: "}; String[][] info = { {"010","John","Male","21"}, {"011","Mary","Female","25"}, {"012","Joseph","Male","24"}, {"013","Peter","Male","22"} }; for(int i = 0; i < info.length; i++) { for(int j = 0; j < info[i].length; j++) { System.out.print(headers[j]); System.out.println(info[i][j]); } System.out.println(); } } }
这里还顺便把i < 4改成了i < info.length,j < 4改成j < info[i].length,以后数组加了新用户或者新字段,循环条件不用改啦!
优化步骤3:封装打印逻辑,让main更简洁
把打印用户信息的逻辑抽成单独的方法,以后要打印类似结构的数组直接调用就行:
public class Exercise4 { public static void main(String[] args) { String[] headers = {"ID: ", "Name: ", "Gender: ", "Age: "}; String[][] info = { {"010","John","Male","21"}, {"011","Mary","Female","25"}, {"012","Joseph","Male","24"}, {"013","Peter","Male","22"} }; printUserInfo(headers, info); } private static void printUserInfo(String[] headers, String[][] userData) { for(String[] user : userData) { // 用增强for循环,更简洁 for(int j = 0; j < user.length; j++) { System.out.print(headers[j]); System.out.println(user[j]); } System.out.println(); } } }
这里还用了增强for循环(for(String[] user : userData)),代替原来的普通for循环,代码更简洁易懂。
进阶优化:用面向对象思想重构(更符合Java风格)
既然是用户信息,不如创建一个User类来封装属性,这样代码更清晰,以后要加用户的其他属性或者行为也方便:
public class Exercise4 { static class User { private String id; private String name; private String gender; private int age; public User(String id, String name, String gender, int age) { this.id = id; this.name = name; this.gender = gender; this.age = age; } // 打印用户信息的方法 public void printInfo() { System.out.println("ID: " + id); System.out.println("Name: " + name); System.out.println("Gender: " + gender); System.out.println("Age: " + age); System.out.println(); } } public static void main(String[] args) { User[] users = { new User("010", "John", "Male", 21), new User("011", "Mary", "Female", 25), new User("012", "Joseph", "Male", 24), new User("013", "Peter", "Male", 22) }; for(User user : users) { user.printInfo(); } } }
这样一来,用户的属性和行为都封装在User类里,代码的可读性和可维护性大大提升,以后要修改用户信息的打印格式,直接改printInfo()方法就行,不用动其他逻辑。
这些优化步骤是循序渐进的,你可以根据自己的学习阶段选择适合的版本~从基础的格式调整、减少冗余,到进阶的面向对象重构,每一步都能让代码更“专业”哦!
内容的提问来源于stack exchange,提问作者Phinx Velasco
相关产品推荐
相关产品推荐

