原以为这一章十分的简单,但我看到题目后就没有这个念头了,可能上课不够认真,又重新认真的看了一次视频。相信大多数都是第三题有很多困惑。
编码题一
题目: 编写程序接收用户输入分数信息,如果分数在0—100之间,输出成绩。如果成绩不在该范围内,抛出异常信息,提示分数必须在0—100之间。(要求:使用自定义异常实现)
第一题在认真看完视频应该没有问题,自定义一个异常然后抛出即可。
package dylan.linger.exeption;
import java.util.Scanner;
/**
* @author Linger
* 输出自定义异常
*/
public class ShowGradeException {
public static void main(String[] args) throws IllegalGradeException {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入分数:");
int grade = scanner.nextInt();
Grade g = new Grade();
g.setGrade(grade);
System.out.println("您的分数是:"+ g.getGrade());
}
}
class Grade{
private int grade;
public int getGrade() {
return grade;
}
public void setGrade(int grade) throws IllegalGradeException {
if (grade<0||grade>100){
throw new IllegalGradeException("分数必须在0-100之间!");
}else{
this.grade = grade;
}
}
}
class IllegalGradeException extends Exception{
public IllegalGradeException(){
}
public IllegalGradeException(String msg){//构造器重载
super(msg);
}
}
运行结果:
编码题二
题目: 写一个方法void isTriangle(int a,int b,int c),判断三个参数是否能构成一个三角形, 如果不能则抛出异常IllegalArgumentException,显示异常信息 “a,b,c不能构成三角形”,如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个整数, 调用此方法,并捕获异常。
第二题跟第一题一样的做法,掌握了第一题,第二题也可以做出来的
package dylan.linger.exeption;
import java.util.Scanner;
/**
* @author Linger
* 判断是否能构成三角形,抛出异常
*/
public class CheckTriangle {
public static void main(String[] args) throws IllegalArgumentException {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入三角形的第一条边的长度:");
int a = scanner.nextInt();
System.out.print("请输入三角形的第二条边的长度:");
int b = scanner.nextInt();
System.out.print("请输入三角形的第三条边的长度:");
int c = scanner.nextInt();
scanner.close();
isTriangle(a,b,c);
}
static void isTriangle(int a,int b,int c) throws IllegalArgumentException {
if(a+b>c&&b+c>a&&a+c>b){
System.out.println("已构成三角形,三条边分别为:"+a+","+b+","+c+"。");
}else {
throw new IllegalArgumentException(a+","+b+","+c+"不能构成三角形。");
}
}
}
class IllegalArgumentException extends Exception{
public IllegalArgumentException(){
}
public IllegalArgumentException(String msg){
super(msg);
}
}
看运行后:
编码题三
题目: 编写一个计算N个学生分数平均分的程序。程序应该提示用户输入N的值,如何必须输入所有N个学生分数。如果用户输入的分数是一个负数,则应该抛出一个异常并捕获,提示“分数必须是正数或者0”。并提示用户再次输入该分数。
(这题对于我来说确实是许多需要思考的地方的,有几个地方做的不好但没有解决方法,我理解的题目是需要抛出异常后重新输入学生个数或分数,继续执行,做完后再看代码感觉没有考到什么,希望师傅们可以指点指点!!!)
package dylan.linger.exeption;
import java.util.Scanner;
/**
* @author DYLAN
* 计算平均分
*/
public class FigureAverage {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入学生个数:");
int num = scanner.nextInt();
if(num<=0) { //判断输入的学生个数是否是负数
try {
throw new IllageGradeException("学生个数必须大于1"); //抛出异常
} catch (IllageGradeException e) {
e.printStackTrace();
}finally {
System.out.print("请重新输入学生的个数:"); //执行更新学生个数操作
int n = scanner.nextInt();
num = n;
}
}
double[] grade = new double[num]; //定义数组保存输入的分数
for(int i=0; i<num;i++){
System.out.print("请输入第"+(i+1)+"位学生的分数:");
double gr = scanner.nextDouble();
grade[i] = gr; //将分数存储在数组中
if(gr<0) { //判断输入的分数是否为负数
try {
throw new IllageGradeException("分数必须是正数或者0");//抛出异常
} catch (IllageGradeException e) {
e.printStackTrace();
}finally {
System.out.print("请重新输入第" + (i + 1) + "位学生的分数:"); //执行更新学生个数操作
double g = scanner.nextDouble();
grade[i] = g;
}
}
}
Average average = new Average(grade);
average.average();//调用方法输出平均分
}
}
class Average {
double[] grade;
double total = 0;//用来计算总数
Average(double[] grade){
this.grade = grade;
}
void average(){ //计算平均分并输出
for (int i=0;i<grade.length;i++){
total += grade[i];
}
System.out.println(grade.length+"位学生的平均分为:"+(total/grade.length));
}
}
class IllageGradeException extends Exception{
public IllageGradeException(){
}
public IllageGradeException(String msg){//构造器重载
super(msg);
}
}
看看执行结果把!
致敬英雄,缅怀同胞。
莎士比亚说:那脑袋里的智慧,就像打火石里的火花一样,,不去打它是不肯出来的。
(PS:也不知道自己理解和做的是否正确,希望师傅们指点。)
——by linger
版权声明:本文为dingdang_miao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。