练习一:制作图示表格
package Text;
import java.awt.*;
import java.util.Arrays;
import java.sql.SQLOutput;
import java.util.Formattable;
import java.util.Formatter;
import java.util.Scanner;
public class EX02 {
public static void main(String[] args) {
double Averge=0.0,sum=0.0;
String[] Names=new String[50];
double[] Score=new double[50];
int i,j=5;
for(i=0;i<j;i++) {
Scanner Name = new Scanner(System.in);
System.out.print("请输入学生姓名:");
Names[i]=Name.nextLine();//nextLine可以接受空格,遇到回车结束输入
Scanner score = new Scanner(System.in);
System.out.print("\t请输入该生java成绩:");
Score[i]=score.nextDouble();
}
System.out.println("----------------------");
System.out.println(" 2020信工java成绩");
System.out.println("序号 姓名 成绩");
for(i=0;i<j;i++) {
System.out.print(i+1+"\t\t");
System.out.print(Names[i]);
System.out.printf("\t%-3.1f\n",Score[i]);
}
for(i=0;i<j;i++){
sum+=Score[i];
Averge=(1.0/j)*sum;
}
System.out.println("平均分:\t"+Averge);
System.out.println("----------------------");
}
}
输出结果为
从键盘读取姓名时,遇到两个字的姓名,中间要空两格,否则成绩栏无法对齐
【遇到的困难】
①在输入两个字的名字,如“张蕾”时,由于“张蕾”不足8位,制表符补全当前字符串长度到8,
而在输入三个字的名字时,制表符\t额外增加了8位空格,在按行输出的情况下导致成绩栏无法对齐
在Java中没有函数可以获得数组的实际长度
③尝试将成绩数组即Score[]单独输出,创建一个新的方法。但需要使用类似C语言中的全局变量,查阅得知java中定义一个静态变量static可起到与全局变量相同的效果,但今天也只是浅尝即止,不求甚解,今后再去学习
暂时无更优解,愿意接受大家指教
2021年11月12日修改
//将输出循环改为
for(i=0;i<j;i++) {
System.out.printf("%d\t %5s\t%-3.1f\n",(i+1),Names[i],Score[i]);
}
//可以成功对齐
结果为:
(感谢老师和各位同学)
练习2:
package Text;
import java.util.Scanner;
public class Ex03 {
public static void main(String[] args) {
System.out.println("--------------------------------------------");
System.out.println(" 商场推出幸运抽奖活动");
System.out.println("抽奖规则:");
System.out.println(" 4位会员卡号的各位数字之和大于20即为幸运顾客");
System.out.println("--------------------------------------------");
int A,B,C,D,Sum=0;
Scanner Num=new Scanner(System.in);
System.out.println("请输入4位会员卡号:");
int num=Num.nextInt();
D=num%10;
C=(num%100)/10;
B=(num%1000)/100;
A=num/1000;
Sum=A+B+C+D;
boolean truth=(Sum>20);
System.out.println("会员卡号"+num+"各位之和:"+Sum);
System.out.println("是幸运顾客吗?\n"+truth);
}
}
输出结果为
比较简单,无技术含量