编写一段程序代码,使得本班同学可以在输入主要科目考试成绩后,获得成绩的分析结果。
下图为思路:
代码如下:
class ResultsSearch
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("* * * * * * * * * 成绩分析程序 * * * * * * * * *"); //输出本程序名字,通过命名本程序来介绍本程序功能
System.out.println("请按所给顺序输入各科成绩,以空格键隔开"); //输出程序要求
/*各科目的学分与绩点的命名如下
科目 学分 得分 绩点
高等数学B1 a aa aaa
高级语言程序设计B b bb bbb
高级语言程序设计B实验 c cc ccc
大学英语1 d dd ddd
形势与政策 e ee eee
中国近现代史纲要 f ff fff
大学体育1 g gg ggg
*/
double a=4; //定义各科目学分
double b=2;
double c=2;
double d=3;
double e=3;
double f=3;
double g=1;
System.out.println("高等数学B1:"); //输出各科目名称
System.out.println("高级语言程序设计B:");
System.out.println("高级语言程序设计B实验:");
System.out.println("大学英语1:");
System.out.println("形势与政策:");
System.out.println("中国近现代史纲要:");
System.out.println("大学体育1:");
double aa=in.nextInt(); //定义并输入个科目得分
double bb=in.nextInt();
double cc=in.nextInt();
double dd=in.nextInt();
double ee=in.nextInt();
double ff=in.nextInt();
double gg=in.nextInt();
double aaa=aa/10-5; //定义并计算各科目绩点
double bbb=bb/10-5;
double ccc=cc/10-5;
double ddd=dd/10-5;
double eee=ee/10-5;
double fff=ff/10-5;
double ggg=gg/10-5;
double a_b=(a*aaa+b*bbb+c*ccc+d*ddd+e*eee+f*fff+g*ggg)/(a+b+c+d+e+f+g); //定义并计算平均绩点
System.out.println(); //空一行
System.out.println(String.format("你的平均绩点是:%.1f",a_b)); //输出平均绩点
System.out.println(); //空一行
if(a_b>=4) //分析成绩,输出成绩分析结果
System.out.println("你的本次成绩非常好。路灯经过一夜的努力,才无愧地领受第一缕晨光的抚慰。同学,你是妥妥的学霸!");
else if(a_b>=3)
System.out.println("你的本次成绩较好。希望和勤奋作伴,便能如虎添翼。继续加油!你会更出色!");
else if(a_b>=2.5)
System.out.println("你的本次成绩不错。目光能看多远,你就能走多远。继续加油,保持清醒与勤奋,你一定会有进步的");
else if(a_b>=2.0)
System.out.println("你的本次成绩距离申请学位证的成绩要求只有一点距离了。当你感到迷茫的时候,请你抬头看看天边的阳光。继续加油!保持清醒与勤奋,你一定会有进步的");
else
System.out.println("你的本次成绩距离申请学位证的成绩要求有一点距离。一分浮躁,一分遗憾。行动是治愈迷惘和犹豫的良药。加油!端正态度,找对方法,保持清醒与勤奋,你一定会有进步的");
System.out.println(""); //空一行,另一行输出鼓励学习的话
System.out.println("学习可以给人以机遇,机遇对于每个人都是平等的。没有准备很难把握机遇。有了准备,随时都有机遇。学习可以使你成为有准备的人,我们得到的许多恩泽都是随心创造的。");
System.out.println("当有一种真正的精神生活,活泼地也深刻地植根于一个人的生命之中,那么无论周围的生命本身都显现出一种挺拔向上的姿态,这种人生才是真正值得的.");
}
}
使用 CMD.EXE 编译、运行此代码,使用 javac 【文件名】命令进行编译,出现了错误:
错误:编码 GBK 的不可映射字符
这是为什么呢?
查询后得出以下结果:
“但是在用javac -d命令编译上述源代码总会出现
错误:编码 GBK 的不可映射字符 (0x8C)
上网搜了搜网上的解释:
由于JDK是国际版的,我们在用javac编译时,编译程序首先会获得我们操作系统默认采用的编码格式(GBK),然后JDK就把Java源文件从GBK编码格式转换为Java内部默认的Unicode格式放入内存中,然后javac把转换后的Unicode格式的文件编译成class类文件,此时,class文件是Unicode编码的,它暂存在内存中,紧接着,JDK将此以Unicode格式编码的class文件保存到操作系统中形成我们见到的class文件。当我们不加设置就编译时,相当于使用了参数:javac -encoding GBK Test.java,就会出现不兼容的情况。
解决方法:使用-encoding参数指明编码方式:javac -encoding UTF-8 Test.java,就可以了。
版权声明:本文为CSDN博主「阿腾木」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。“
原文
注:javac【文件名】 命令可以编译成功纯英文代码
使用 javac -encoding UTF-8 【文件名】命令编译,出现了新的问题:
错误: 找不到符号 Scanner scan=Scanner(System.in);
这是为什么呢?
查询后得出以下结果
在第一行加入“import java.util.Scanner;”后,代码如下:
import java.util.Scanner; //获取用户的输入的包
class ResultsSearch
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("* * * * * * * * * 成绩分析程序 * * * * * * * * *"); //输出本程序名字,通过命名本程序来介绍本程序功能
System.out.println("请按所给顺序输入各科成绩,以空格键隔开"); //输出程序要求
/*各科目的学分与绩点的命名如下
科目 学分 得分 绩点
高等数学B1 a aa aaa
高级语言程序设计B b bb bbb
高级语言程序设计B实验 c cc ccc
大学英语1 d dd ddd
形势与政策 e ee eee
中国近现代史纲要 f ff fff
大学体育1 g gg ggg
*/
double a=4; //定义各科目学分
double b=2;
double c=2;
double d=3;
double e=3;
double f=3;
double g=1;
System.out.println("高等数学B1:"); //输出各科目名称
System.out.println("高级语言程序设计B:");
System.out.println("高级语言程序设计B实验:");
System.out.println("大学英语1:");
System.out.println("形势与政策:");
System.out.println("中国近现代史纲要:");
System.out.println("大学体育1:");
double aa=in.nextInt(); //定义并输入个科目得分
double bb=in.nextInt();
double cc=in.nextInt();
double dd=in.nextInt();
double ee=in.nextInt();
double ff=in.nextInt();
double gg=in.nextInt();
double aaa=aa/10-5; //定义并计算各科目绩点
double bbb=bb/10-5;
double ccc=cc/10-5;
double ddd=dd/10-5;
double eee=ee/10-5;
double fff=ff/10-5;
double ggg=gg/10-5;
double a_b=(a*aaa+b*bbb+c*ccc+d*ddd+e*eee+f*fff+g*ggg)/(a+b+c+d+e+f+g); //定义并计算平均绩点
System.out.println(); //空一行
System.out.println(String.format("你的平均绩点是:%.1f",a_b)); //输出平均绩点
System.out.println(); //空一行
if(a_b>=4) //分析成绩,输出成绩分析结果
System.out.println("你的本次成绩非常好。路灯经过一夜的努力,才无愧地领受第一缕晨光的抚慰。同学,你是妥妥的学霸!");
else if(a_b>=3)
System.out.println("你的本次成绩较好。希望和勤奋作伴,便能如虎添翼。继续加油!你会更出色!");
else if(a_b>=2.5)
System.out.println("你的本次成绩不错。目光能看多远,你就能走多远。继续加油,保持清醒与勤奋,你一定会有进步的");
else if(a_b>=2.0)
System.out.println("你的本次成绩距离申请学位证的成绩要求只有一点距离了。当你感到迷茫的时候,请你抬头看看天边的阳光。继续加油!保持清醒与勤奋,你一定会有进步的");
else
System.out.println("你的本次成绩距离申请学位证的成绩要求有一点距离。一分浮躁,一分遗憾。行动是治愈迷惘和犹豫的良药。加油!端正态度,找对方法,保持清醒与勤奋,你一定会有进步的");
System.out.println(""); //空一行,另一行输出鼓励学习的话
System.out.println("学习可以给人以机遇,机遇对于每个人都是平等的。没有准备很难把握机遇。有了准备,随时都有机遇。学习可以使你成为有准备的人,我们得到的许多恩泽都是随心创造的。");
System.out.println("当有一种真正的精神生活,活泼地也深刻地植根于一个人的生命之中,那么无论周围的生命本身都显现出一种挺拔向上的姿态,这种人生才是真正值得的.");
}
}
使用 CMD.EXE 编译、运行此代码:
运行成功