5 changed files with 163 additions and 1 deletions
@ -0,0 +1,51 @@ |
|||
public class ShapeDemo { |
|||
public static void main(String[] args) { |
|||
// 创建不同形状的对象
|
|||
Shape circle = new Circle(); |
|||
Shape rectangle = new Rectangle(); |
|||
|
|||
// 测试drawShape方法
|
|||
drawShape(circle); |
|||
drawShape(rectangle); |
|||
} |
|||
|
|||
/** |
|||
* 调用形状的draw方法 |
|||
* @param s 形状对象 |
|||
*/ |
|||
public static void drawShape(Shape s) { |
|||
s.draw(); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 形状基类 |
|||
*/ |
|||
class Shape { |
|||
/** |
|||
* 绘制方法 |
|||
*/ |
|||
public void draw() { |
|||
System.out.println("绘制形状"); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 圆形类 |
|||
*/ |
|||
class Circle extends Shape { |
|||
@Override |
|||
public void draw() { |
|||
System.out.println("绘制圆形"); |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 矩形类 |
|||
*/ |
|||
class Rectangle extends Shape { |
|||
@Override |
|||
public void draw() { |
|||
System.out.println("绘制矩形"); |
|||
} |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
import java.io.BufferedReader; |
|||
import java.io.FileReader; |
|||
import java.io.IOException; |
|||
|
|||
public class ScoreCalculator { |
|||
public static void main(String[] args) { |
|||
String fileName = "scores.txt"; |
|||
int sum = 0; |
|||
int count = 0; |
|||
|
|||
// try-with-resources 自动关闭流,无需手动写 br.close()
|
|||
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { |
|||
String line; |
|||
while ((line = br.readLine()) != null) { |
|||
// 去除字符串前后空格,避免空行或空格影响解析
|
|||
line = line.trim(); |
|||
if (line.isEmpty()) { |
|||
continue; // 跳过空行
|
|||
} |
|||
|
|||
try { |
|||
// 解析成绩为整数
|
|||
int score = Integer.parseInt(line); |
|||
sum += score; |
|||
count++; |
|||
} catch (NumberFormatException e) { |
|||
// 数字格式错误处理
|
|||
System.err.println("警告:无法解析成绩 '" + line + "',跳过该数据"); |
|||
} |
|||
} |
|||
|
|||
// 计算平均分
|
|||
if (count > 0) { |
|||
double average = (double) sum / count; |
|||
System.out.println("平均分:" + average); |
|||
} else { |
|||
System.out.println("文件中没有有效成绩数据"); |
|||
} |
|||
|
|||
} catch (IOException e) { |
|||
// 文件不存在、读取错误处理
|
|||
System.err.println("读取文件时发生错误:" + e.getMessage()); |
|||
e.printStackTrace(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
abstract class Animal { |
|||
// 抽象方法:动物叫声
|
|||
public abstract void makeSound(); |
|||
} |
|||
|
|||
// 2. Swimmable 接口
|
|||
interface Swimmable { |
|||
// 游泳方法
|
|||
void swim(); |
|||
} |
|||
|
|||
// 3. Dog 类:继承 Animal,实现 Swimmable
|
|||
class Dog extends Animal implements Swimmable { |
|||
@Override |
|||
public void makeSound() { |
|||
System.out.println("小狗汪汪叫:汪汪汪!"); |
|||
} |
|||
|
|||
@Override |
|||
public void swim() { |
|||
System.out.println("小狗在水里狗刨式游泳!"); |
|||
} |
|||
} |
|||
|
|||
// 4. Cat 类:继承 Animal,不实现 Swimmable
|
|||
class Cat extends Animal { |
|||
@Override |
|||
public void makeSound() { |
|||
System.out.println("小猫喵喵叫:喵喵喵!"); |
|||
} |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
public class AnimalTest { |
|||
public static void main(String[] args) { |
|||
// 多态方式创建对象
|
|||
Animal dog = new Dog(); |
|||
Animal cat = new Cat(); |
|||
|
|||
// 调用 makeSound 方法(多态体现)
|
|||
System.out.println("=== 动物叫声测试 ==="); |
|||
dog.makeSound(); |
|||
cat.makeSound(); |
|||
|
|||
// 测试 Swimable 接口(Dog 能游泳,Cat 不能)
|
|||
System.out.println("\n=== 游泳能力测试 ==="); |
|||
if (dog instanceof Swimmable) { |
|||
((Swimmable) dog).swim(); |
|||
} |
|||
if (cat instanceof Swimmable) { |
|||
((Swimmable) cat).swim(); |
|||
} else { |
|||
System.out.println("小猫不会游泳哦!"); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue