Java成绩册程序:如何调整二维数组输出值的右对齐间距
Java成绩册格式调整解决方案
问题说明
正在完成课堂作业,编写一个包含5名学生两门考试成绩的Java成绩册程序,最终要支持打印学生个人平均分或班级单科平均分。当前用printf输出学生姓名与成绩时,没法实现成绩数值右对齐且间距均匀的效果,需要调整代码达到目标格式。
期望输出
Adams 75 75 Baker 100 75 Campbell 84 75 Dewey 80 75 East 50 75
现有代码
import java.util.*; import java.io.*; public class GradeBook { public static void main(String[] args) { System.out.println("Starting program\n\n"); String[] STUDENT_NAMES = new String[] {"Adams", "Baker", "Campbell", "Dewey", "East"}; int[][] STUDENT_GRADES = new int[5][3]; loadGradeArray(STUDENT_GRADES); for (int i = 0; i < STUDENT_NAMES.length; i++) { System.out.printf("%s %d %d \n", STUDENT_NAMES[i], STUDENT_GRADES[i][0], STUDENT_GRADES[i][1]); } } //end main public static void loadGradeArray(int[][] STUDENT_GRADES) { for(int row = 0; row<STUDENT_GRADES.length; row++) { for(int col = 0; col<STUDENT_GRADES[row].length; col++) { STUDENT_GRADES[0][0] = 75; STUDENT_GRADES[0][1] = 75; STUDENT_GRADES[1][0] = 100; STUDENT_GRADES[1][1] = 75; STUDENT_GRADES[2][0] = 84; STUDENT_GRADES[2][1] = 75; STUDENT_GRADES[3][0] = 80; STUDENT_GRADES[3][1] = 75; STUDENT_GRADES[4][0] = 50; STUDENT_GRADES[4][1] = 75; } } } }
修改步骤
调整
printf格式化字符串:- 姓名部分用
%-12s:-表示左对齐,12是固定宽度,确保所有姓名占满统一宽度,让后续成绩能对齐。 - 成绩部分用
%4d:4是固定宽度,让成绩右对齐,即使是三位数的100也能和其他成绩保持一致的间距。
修改后的输出语句为:System.out.printf("%-12s %4d %4d%n", STUDENT_NAMES[i], STUDENT_GRADES[i][0], STUDENT_GRADES[i][1]);
- 姓名部分用
优化成绩加载方法:
原loadGradeArray里的嵌套循环完全多余,每次循环都重复给数组赋值,直接去掉循环,直接给数组元素赋值即可,减少冗余代码。
修改后完整代码
import java.util.*; import java.io.*; public class GradeBook { public static void main(String[] args) { System.out.println("Starting program\n\n"); String[] STUDENT_NAMES = new String[] {"Adams", "Baker", "Campbell", "Dewey", "East"}; int[][] STUDENT_GRADES = new int[5][3]; loadGradeArray(STUDENT_GRADES); for (int i = 0; i < STUDENT_NAMES.length; i++) { // 调整格式化字符串实现左对齐姓名、右对齐成绩 System.out.printf("%-12s %4d %4d%n", STUDENT_NAMES[i], STUDENT_GRADES[i][0], STUDENT_GRADES[i][1]); } } //end main public static void loadGradeArray(int[][] STUDENT_GRADES) { // 去掉多余循环,直接赋值 STUDENT_GRADES[0][0] = 75; STUDENT_GRADES[0][1] = 75; STUDENT_GRADES[1][0] = 100; STUDENT_GRADES[1][1] = 75; STUDENT_GRADES[2][0] = 84; STUDENT_GRADES[2][1] = 75; STUDENT_GRADES[3][0] = 80; STUDENT_GRADES[3][1] = 75; STUDENT_GRADES[4][0] = 50; STUDENT_GRADES[4][1] = 75; } }
内容的提问来源于stack exchange,提问作者b-rad90
相关产品推荐
相关产品推荐

