PTA jmu-Java-06异常-02-使用异常机制处理异常输入分数 7

该程序示例展示了如何在Java中使用异常处理机制来确保用户输入的是整数。当输入非整型字符串时,程序会捕获NumberFormatException,打印异常信息,并要求重新输入。最终,程序输出一个没有非整数的数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用异常处理输入机制,让程序变得更健壮。

main方法:

  1. 输入n,创建大小为n的int数组。

  1. 输入n个整数,放入数组。输入时,有可能输入的是非整型字符串,这时候需要输出异常信息,然后重新输入。

  1. 使用Arrays.toString输出数组中的内容。

输入样例:

5
1
2
a
b
4
5
3

输出样例:

java.lang.NumberFormatException: For input string: "a"
java.lang.NumberFormatException: For input string: "b"
[1, 2, 4, 5, 3]

代码长度限制16 KB

时间限制400 ms

内存限制64 MB

import java.util.Arrays;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int m = n;
        while (m > 0){
            try {
                int val = Integer.parseInt(sc.next());
                arr[n - m % (n + 1)] = val;
                m--;
            } catch (Exception e) {
                System.out.println(e);
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

### Java 中通过继承和多态实现形状类的设计 在 Java 的面向对象编程中,可以通过继承和多态来优化程序结构。以下是一个具体的例子,展示如何利用 `Shape` 类作为基类,并让 `Rectangle` 和 `Circle` 继承它,同时实现多态行为。 #### 设计思路 1. 定义一个抽象的 `Shape` 类,其中包含通用的行为和属性。 2. 创建两个子类 `Rectangle` 和 `Circle`,分别表示矩形和圆形。 3. 实现多态特性,使得不同形状的对象能够调用相同的方法却表现出不同的行为。 以下是完整的代码示例: ```java // 抽象 Shape 类 abstract class Shape { protected String name; public Shape(String name) { this.name = name; } // 计算面积的抽象方法 public abstract double getArea(); @Override public String toString() { return "Shape{" + "name='" + name + '\'' + ", area=" + getArea() + '}'; } } // Rectangle 子类 class Rectangle extends Shape { private int width, length; public Rectangle(int width, int length) { super("Rectangle"); this.width = width; this.length = length; } @Override public double getArea() { return width * length; // 矩形面积计算公式 } } // Circle 子类 class Circle extends Shape { private int radius; public Circle(int radius) { super("Circle"); this.radius = radius; } @Override public double getArea() { return Math.PI * radius * radius; // 圆形面积计算公式 } } public class Main { public static void main(String[] args) { // 创建 Rectangle 对象并打印其信息 Shape rectangle = new Rectangle(5, 10); System.out.println(rectangle); // 创建 Circle 对象并打印其信息 Shape circle = new Circle(7); System.out.println(circle); // 多态测试:统一处理不同类型的对象 processShape(rectangle); // 调用 Rectangle 的 getArea 方法 processShape(circle); // 调用 Circle 的 getArea 方法 } // 处理任意 Shape 对象的方法 public static void processShape(Shape shape) { System.out.println("Processing a " + shape.toString()); } } ``` #### 关键点解析 1. **抽象类与方法** - `Shape` 是一个抽象类,提供了共同的接口 `getArea()`,该方法被声明为抽象以便强制所有子类实现自己的版本[^1]。 2. **继承关系** - `Rectangle` 和 `Circle` 都继承自 `Shape`,它们各自实现了 `getArea()` 方法以适应自身的几何特征[^2]。 3. **多态的应用** - 在 `processShape` 方法中传入的是 `Shape` 类型参数,但实际上它可以接受任何派生自 `Shape` 的实例。这体现了运行时多态的特点[^4]。 4. **toString 方法覆盖** - 自动生成或手动定制的 `toString` 方法有助于更直观地查看对象的状态信息[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不再言语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值