JavaSE编程题目练习(三)

news2025/5/25 4:13:40

博客昵称:架构师Cool
最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。
作者简介:一名Coder,欢迎关注小弟!
博主小留言:哈喽!各位CSDN的uu们,我是你的小弟Cool,希望我的文章可以给您带来一定的帮助
百万笔记知识库, 所有基础的笔记都在这里面啦,点击左边蓝字即可获取!助力每一位未来架构师!
欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

编程题目解析

  • 实验十一
    • 1、程序改错
      • 1-1、题目
      • 1-2、代码
    • 2、计算不同图形面积和周长
      • 2-1、题目
      • 2-2、代码
    • 3、计算圆柱体
      • 3-1、题目
      • 3-2、代码
  • 实验十二
    • 1、接口的使用
      • 1-1、题目
      • 1-2、代码
    • 2、计算器
      • 2-1、题目
      • 2-2、代码
  • 实验十三
    • 1、监测体重
      • 1-1、题目
      • 1-2、代码
    • 2、成绩异常检测
      • 2-1、题目
      • 2-2、代码
  • 实验十四
    • 1、机票
      • 1-1、题目
      • 1-2、代码
    • 2、随机五位数验证码
      • 2-1、题目
      • 2-2、代码
    • 3、数字加密
      • 3-1、题目
      • 3-2、代码
    • 4、抢红包
      • 4-1、题目
      • 4-2、代码
  • 实验十五
    • 1、绘制基本图形
      • 1-1、题目
      • 1-2、代码一
      • 1-3、代码二
    • 2、修改snowman图形
      • 2-1、题目
      • 2-2、代码
    • 3、绘制饼图
      • 3-1、题目
      • 3-2、代码

接着上面的文章
JavaSE编程题目练习(一)
JavaSE编程题目练习(二)

实验十一

1、程序改错

1-1、题目

下列程序有错,请仔细阅读,找出错误并改正。
(1) abstract class Man{
(2) public String name;
(3) public void Man(String name){
(4) this.name=name;
(5) }
(6) public abstract void print(){ };
(7) }
(8) public class Test40 extend Man{
(9) public Test40(String name){
(10) super(name);
(11) }
(12) public void print(){
(13) System.out.println(“name=”+name);
(14) }
(15) public static void main(String[] args) {
(16) Test40 xm=new Test40(“tom”);
(17) xm.print();
(18) }
(19) }
第 行错误,改为
第 行错误,改为
第 行错误,改为

1-2、代码

第 三 行错误,改为 public Man(String name){
第 六 行错误,改为 public void print(){ };
第 八 行错误,改为 public class Test40 extends Man{

2、计算不同图形面积和周长

2-1、题目

1.编写一个抽象类(Shape),长方形、三角形和圆形均为其子类,并各有各的属性。其父类中有计算周长和面积的方法。在测试类中,分别建立如干个对象,计算并输出各对象的周长和面积。

2-2、代码

abstract class Shape {
    //计算周长
    public abstract double calculatePerimeter();
    //计算面积
    public abstract double calculateArea();

}
class Rectangle extends Shape{
    private double length;
    private double width;

    public Rectangle(double length, double width) {
        this.length = length;
        this.width = width;
    }
    @Override
    public double calculatePerimeter() {
        return length * width;
    }
    @Override
    public double calculateArea() {
        return length * width;
    }
}
class Triangle extends Shape {
    private double side1;
    private double side2;
    private double side3;
    public Triangle(double side1, double side2, double side3) {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }

    public double calculatePerimeter() {
        return side1 + side2 + side3;
    }
    public double calculateArea() {
        //海伦公式:area=√(s*(s-a)(s-b)(s-c))
        double s = (side1 + side2 + side3) / 2;
        return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
    }
}
class Circle extends Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public double calculatePerimeter() {
        return 2 * Math.PI * radius;
    }

    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}
public class ShapeTest{
    public static void main(String[] args) {
        Rectangle rectangle = new Rectangle(5, 3);
        System.out.println("Rectangle area: " + rectangle.calculateArea());
        System.out.println("Rectangle perimeter: " + rectangle.calculatePerimeter());

        Triangle triangle = new Triangle(3, 4, 5);
        System.out.println("Triangle area: " + triangle.calculateArea());
        System.out.println("Triangle perimeter: " + triangle.calculatePerimeter());

        Circle circle = new Circle(4);
        System.out.println("Circle area: " + circle.calculateArea());
        System.out.println("Circle perimeter: " + circle.calculatePerimeter());
    }
}

3、计算圆柱体

3-1、题目

(1)设计一个表示二维平面上点的类Point,包含有表示坐标位置的protected类型的成员变量x和y,获取和设置x 和y值的public方法。
(2).设计一个表示二维平面上圆的类Circle,它继承自类Point,还包含有表示圆半径的protected类型的成员变量r、获取和设置r值的public方法、计算圆面积的public方法。
(3).设计一个表示圆柱体的类Cylinder,它继承自类Circle,还包含有表示圆柱体高的protected类型的成员变量h、获取和设置h值的public方法、计算圆柱体体积的public方法。
(4).建立若干个Cylinder对象,输出其轴心位置坐标、半径、高及其体积的值。

实验要求:
. 每个类包含无参数和有参数的构造方法。构造方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为0值。
.子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。
.方法名自定;

3-2、代码


public class Test01 {
    public static void main(String[] args) {
        Cylinder cylinder1 = new Cylinder(1, 2, 3, 4);
        Cylinder cylinder2 = new Cylinder(5, 6, 7, 8);

        System.out.println("圆柱体 1 - 轴心坐标: (" + cylinder1.getX() + ", " + cylinder1.getY() + ")");
        System.out.println("圆柱体 1 - 半径: " + cylinder1.getR());
        System.out.println("圆柱体 1 - 高: " + cylinder1.getH());
        System.out.println("圆柱体 1 - 体积: " + cylinder1.calculateCircleVolume());

        System.out.println("圆柱体 2 - 轴心坐标: (" + cylinder2.getX() + ", " + cylinder2.getY() + ")");
        System.out.println("圆柱体 2 - 半径: " + cylinder2.getR());
        System.out.println("圆柱体 2 - 高: " + cylinder2.getH());
        System.out.println("圆柱体 2 - 体积: " + cylinder2.calculateCircleVolume());
    }
}
class Point{
    protected int x;
    protected int y;

    public Point() {
        x = 0;
        y = 0;
    }

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
}
class Circle extends Point{
    protected int r;
    public Circle() {
        super();
        r = 0;
    }

    public Circle(int x, int y, int r) {
        super(x, y);
        this.r= r;
    }

    public double getR() {
        return r;
    }

    public void setR(int r) {
        this.r = r;
    }
    public double calculateCircleArea() {
        return Math.PI * r * r;
    }
}
class Cylinder extends Circle{
    protected int h;

    public Cylinder() {
        super();
        h = 0;
    }

    public Cylinder(int x, int y, int r, int h) {
        super(x, y, r);
        this.h = h;
    }

    public double getH() {
        return h;
    }

    public void setH(int h) {
        this.h = h;
    }
    public double calculateCircleVolume() {
        return calculateCircleArea() * h;
    }
}

实验十二

1、接口的使用

1-1、题目

接口的使用
1,定义一个接口Shape,它含有一个抽象方法 double area( )
2,定义一个表示三角形的类Triangle,该类实现接口Shape。此类中有两个分别用于存储三角形底边和高度的private成员变量int width和int height,在该类实现的方法area中计算并返回三角形的面积。
3,定义一个表示矩形的类Rectangle,该类实现接口Shape。此类中有两个分别表示矩形长度和高度度的成员变量int width和int height,在该类实现的方法area中计算并返回矩形的面积。
4,定义一个类ShapeTest,该类中有一个方法如下:
public static void showArea(Shape s){
System.out.println(“area=”+s.area());
}
在ShapeTest类中定义main函数,在main函数中创建Triang类的对象和Rectangle类的对象,并调用方法showArea两次以输出两个对象的面积。
 思考:两次调用showArea方法时调用的area方法各是在哪个类中定义的方法?答:三角形调用showArea方法时调用的area方法是Triangle类中定义的方法,而矩形调用showArea方法时调用的area方法是Rectangle类中定义的方法

1-2、代码

interface Shape {
    double area();
}
class Triangle implements Shape{
    private int width=50;
    private int height=20;
    @Override
    public double area() {
        return width*height/2;
    }
}
class Rectangle implements Shape{
    private int width=50;
    private int height=20;
    @Override
    public double area() {
        return width*height;
    }
}
public class ShapeTest{
    public static void main(String[] args) {
        Triangle triangle = new Triangle();
        Rectangle rectangle = new Rectangle();
        showArea(triangle);
        showArea(rectangle);
    }
    public static void showArea(Shape s){
        System.out.println("area="+s.area());
    }
}

2、计算器

2-1、题目

利用接口做参数, 写个计算器,能完成加减乘除运算:
(1)定义一个接口Calculator含有一个方法int computer(int n, int m)。
(2)设计四个类分别实现此接口,完成加减乘除运算。
(3)设计一个类Computer,类中含有方法:public void useCal (Calculator com, int op1, int op2),要求调用computer(),对参数进行运算。
(4)设计一个主类TestCh09_02,调用Computer中的方法computer来完成加减乘除运算。
运行结果:
25+6和为:31
32-12差为:20
15*5乘积为:75
16/2商为:8

2-2、代码

interface Calculator{
    int computer(int n ,int m);
}
class Addition implements Calculator {
    @Override
    public int computer(int n, int m) {
        return n + m;
    }

}

class Subtraction implements Calculator {
    public int computer(int n, int m) {
        return n - m;
    }
}

class Multiplication implements Calculator {
    public int computer(int n, int m) {
        return n * m;
    }
}

class Division implements Calculator {
    public int computer(int n, int m) {
        if (m == 0) {
            throw new IllegalArgumentException("除数不能为0");
        }
        return n / m;
    }
}
class Computer{
    public void useCal(Calculator com ,int op1,int op2){
        int result = com.computer(op1,op2);
        System.out.print(result);
    }
}
public class TestCh09_02 {
    public static void main(String[] args) {
        Computer computer = new Computer();

        int operand1 = 25;
        int operand2 = 6;

        Calculator addition = new Addition();
        System.out.print(operand1+"+"+operand2+"和为:");
        computer.useCal(addition, operand1, operand2); // 执行加法运算
        System.out.println();

        operand1=32;
        operand2=12;
        Calculator subtraction = new Subtraction();
        System.out.print(operand1+"-"+operand2+"差为:");
        computer.useCal(subtraction, operand1, operand2); // 执行减法运算
        System.out.println();

        operand1=15;
        operand2=5;
        Calculator multiplication = new Multiplication();
        System.out.print(operand1+"*"+operand2+"乘积为:");
        computer.useCal(multiplication, operand1, operand2); // 执行乘法运算
        System.out.println();

        operand1=16;
        operand2=2;
        Calculator division = new Division();
        System.out.print(operand1+"/"+operand2+"商为:");
        computer.useCal(division, operand1, operand2); // 执行除法运算
    }
}

实验十三

1、监测体重

1-1、题目

1.定义一个类来监控体重是否超重,体重指数BMI=体重(kg)÷身高÷身高(m),中国成人居民BMI衡量标准是≤18.4为消瘦、18.5-23.9为正常、24-27.9为超重、≥28为肥胖。体重超重需要提示多运动。运行结果如图13- 1 超重提示图所示:
在这里插入图片描述

1-2、代码

import java.util.Scanner;
public class ExceptionTest {
    //1.定义一个类来监控体重是否超重,体重指数BMI=体重(kg)÷身高÷身高(m)
    // 中国成人居民BMI衡量标准是≤18.4为消瘦、18.5-23.9为正常
    // 24-27.9为超重、≥28为肥胖。体重超重需要提示多运动。
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Weight wg = new Weight();
        System.out.println("请输入体重(kg):");
        wg.setWeight(sc.nextDouble());
        System.out.println("请输入身高(m):");
        wg.setHeight(sc.nextDouble());
        double bmi=wg.getBmi(wg);
        if (bmi<=18.4)
            System.out.println("太瘦了,多吃肉");
        else if (bmi<=23.9 && bmi>=18.5)
            System.out.println("非常健康的身体哦");
        else if (bmi<=27.9 && bmi>=24) {
            System.out.println("体重超重,多运动");
        }
        else {
            System.out.println("肥胖人群,需要减肥了");
        }
        System.out.println(bmi);

    }
}
class Weight{
    private double height;
    private double weight;
    public void setHeight(double height) {
        this.height = height;
    }
    public void setWeight(double weight) {
        this.weight = weight;
    }
    public double getBmi(Weight wg){
        return weight/height/height;
    }
}

2、成绩异常检测

2-1、题目

定义Student类,其属性:
private String name;
private int score;
自定义IllegalScoreException异常类,代表分数相加后超出合理范围的异常。
测试学生对象。要求以new作为输入标识,输入一行学生数据,格式为姓名 年龄,后调用addScore。addScore不成功则抛出异常,并打印异常信息,然后如正常则打印学生信息。
运行结果如图13- 2成绩异常图所示:
在这里插入图片描述

2-2、代码

import java.util.Scanner;
//todo 还未完成的项目
public class StudentScore {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s=scanner.nextLine();
        //判断是否
        while(s.equals("new")){
            System.out.print("请输入姓名:");
            String name = scanner.nextLine();
            System.out.print("请输入成绩:");
            int score = scanner.nextInt();
            Student student = new Student(name,score);
            try {
                student.addScore(score);
                System.out.println(student.toString());
            }catch (IllegalScoreException e){
                System.out.println("IllegalScoreException:"+e.getMessage());
            }
            scanner.nextLine();
            s=scanner.nextLine();
        }

    }
}
class Student{
    private String name;
    private int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public void addScore(int scoreToAdd) throws IllegalScoreException{
        if(scoreToAdd+score > 200) {
            throw new IllegalScoreException(score);
        }
        score=scoreToAdd;
    }

    @Override
    public String toString() {
        return "Student[" +
                "name='" + name + '\'' +
                ", score=" + score +
                ']';
    }
}
class IllegalScoreException extends RuntimeException{
    public IllegalScoreException(int score){
        super("成绩超过有效范围,成绩为=" + score);
    }
}

实验十四

1、机票

1-1、题目

在这里插入图片描述
在这里插入图片描述

1-2、代码

import java.util.Scanner;

public class AirTicketTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double newPrice;
        while (true) {
            System.out.println("输入机票原价:");
            int oldPrice = sc.nextInt();
            if (oldPrice==-1){
                break;
            }
            System.out.println("输入月份:");
            int mouth = sc.nextInt();
            System.out.println("输入0则为头等舱1则为经济舱:");
            int wareHouse = sc.nextInt();//仓位
            if (mouth > 4 && mouth < 11) {
                System.out.println("旺季");
                if (wareHouse == 1) {
                    newPrice = oldPrice * (0.85);
                    System.out.print("经济舱");
                } else {
                    newPrice = oldPrice * (0.9);
                    System.out.print("头等舱");
                }
            } else {
                System.out.println("淡季");
                if (wareHouse == 1) {
                    System.out.print("经济舱");
                    newPrice = oldPrice * (0.65);
                } else {
                    newPrice = oldPrice * (0.7);
                    System.out.print("头等舱");
                }
            }
            System.out.println("票价为" + newPrice);
        }
    }
}

2、随机五位数验证码

2-1、题目

在这里插入图片描述
在这里插入图片描述

2-2、代码

import java.util.Random;

//验证码
public class Verification {
    public static void main(String[] args) {
        String verificationCode = getCode();
        System.out.println("验证码:" + verificationCode);
    }

    public static String getCode() {
        Random random = new Random();
        StringBuilder code = new StringBuilder();

        // 生成前四位随机字母
        for (int i = 0; i < 4; i++) {
            char c = (char) (random.nextInt(26) + 'A');
            code.append(c);
        }

        // 生成最后一位随机数字
        int digit = random.nextInt(10);
        code.append(digit);

        return code.toString();
    }
}

3、数字加密

3-1、题目

在这里插入图片描述

3-2、代码

import java.util.Scanner;

public class Encryption {
    public static void main(String[] args) {
        Code code = new Code();
        Scanner sc = new Scanner(System.in);
        int anInt = sc.nextInt();
        if (anInt>0) {
            code.enCode(anInt);
        }else {
            System.out.println("密码小于0");
        }

    }
}
class Code{
    public void enCode(int code){
        int qw,bw,sw,gw;
        qw=code/1000;
        bw=code%1000/100;
        sw=code/10%10;
        gw=code%10;
        int firstCode= (qw+5)%10*1000+(bw+5)%10*100+(sw+5)%10*10+(gw+5)%10;
        qw=firstCode/1000;
        bw=firstCode%1000/100;
        sw=firstCode/10%10;
        gw=firstCode%10;
        int nextCode=gw*1000+sw*100+bw*10+qw;
        System.out.println(code+"加密后的结果是"+nextCode);
    }
}
}

4、抢红包

4-1、题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4-2、代码

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class LuckyDraw {
    public static void main(String[] args) {
        List<Integer> prizes = new ArrayList<>();
        prizes.add(2588);
        prizes.add(888);
        prizes.add(1000);
        prizes.add(10000);
        prizes.add(2);

        Collections.shuffle(prizes); // 随机打乱奖项顺序

        for (int prize : prizes) {
            if (prize == 888) {
                System.out.println("888元的奖金被抽出");
            } else if (prize == 588) {
                System.out.println("588元的奖金被抽出");
            } else if (prize == 1000) {
                System.out.println("1000元的奖金被抽出");
            } else if (prize == 10000) {
                System.out.println("10000元的奖金被抽出");
            } else if (prize == 2) {
                System.out.println("2元的奖金被抽出");
            }
        }
    }
}

实验十五

1、绘制基本图形

1-1、题目

第一题
利用第三章的绘图知识
1,画出4个长方形:
其中一个长方形完全包含在另外一个长方形中;
第三个长方形与前两个长方形有交叉,当没有完全包含起来;
第四个长方形和其他三个长方形完全没有交叉。
在这里插入图片描述
第二题
,2. 改变图形的背景颜色。将其中两个长方形改为椭圆形,修改四个图形的背景颜色,保证每个图形颜色都和其他的不一样。
在这里插入图片描述

1-2、代码一

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class FourRectangle extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Pane root = new Pane();

        // 第一个长方形
        Rectangle rectangle1 = new Rectangle(50, 50, 200, 100);
        rectangle1.setFill(null);
        rectangle1.setStroke(Color.RED);
        root.getChildren().add(rectangle1);

        // 第二个长方形,完全包含在第一个长方形中
        Rectangle rectangle2 = new Rectangle(60, 90, 50, 25);
        rectangle2.setFill(null);
        rectangle2.setStroke(Color.BLACK);
        root.getChildren().add(rectangle2);

        // 第三个长方形,与第一个和第二个长方形有交叉
        Rectangle rectangle3 = new Rectangle(70, 70, 200, 100);
        rectangle3.setFill(null);
        rectangle3.setStroke(Color.YELLOW);
        root.getChildren().add(rectangle3);

        // 第四个长方形,与前三个长方形完全没有交叉
        Rectangle rectangle4 = new Rectangle(300, 300, 200, 100);
        rectangle4.setFill(null);
        rectangle4.setStroke(Color.GREEN);
        root.getChildren().add(rectangle4);

        Scene scene = new Scene(root, 600, 600);
        primaryStage.setTitle("Rectangles");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

1-3、代码二

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class FourRectangle2 extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Pane root2 = new Pane();

        // 第一个长方形
        Rectangle rectangle1 = new Rectangle(50, 50, 200, 100);
        rectangle1.setFill(Color.RED);
        rectangle1.setStroke(Color.BLACK);
        root2.getChildren().add(rectangle1);

        // 第二个长方形,完全包含在第一个长方形中
        Rectangle rectangle2 = new Rectangle(60, 90, 50, 25);
        rectangle2.setFill(Color.BLACK);
        rectangle2.setStroke(Color.BLACK);
        root2.getChildren().add(rectangle2);

        // 第三个长方形,与第一个和第二个长方形有交叉
        Ellipse ellipse1 = new Ellipse(170, 110, 100, 50);
        ellipse1.setFill(Color.YELLOW);
        ellipse1.setStroke(Color.BLACK);
        root2.getChildren().add(ellipse1);

        // 第四个长方形,与前三个长方形完全没有交叉
        Ellipse ellipse2 = new Ellipse(300, 300, 100, 50);
        ellipse2.setFill(Color.GREEN);
        ellipse2.setStroke(Color.GREEN);
        root2.getChildren().add(ellipse2);

        Scene scene = new Scene(root2, 600, 600);
        primaryStage.setTitle("Rectangles");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

2、修改snowman图形

2-1、题目

按照以下要求修改程序Snowman.java(参考源码)
将雪人的嘴型变成哭脸的倒弧嘴样;
把太阳移动到图片的右上角;
在图片左上角显示你的名字;
将整个雪人右移50个像素。
在这里插入图片描述
在这里插入图片描述

2-2、代码

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.shape.Arc;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Line;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;


public class SnowMan extends Application {
    @Override
    public void start(Stage stage) {
        try {
            //最底层的雪球
            Ellipse baseSnowball =new Ellipse(80,210,80,60);
            baseSnowball.setFill(Color.WHITE);
            // 连接的中间雪球
            Ellipse connectSnowball =new Ellipse(80,130,50,40);
            connectSnowball.setFill(Color.WHITE);
            //头部的雪球
            Circle headerSnowball = new Circle(80,70,30);
            headerSnowball.setFill(Color.WHITE);

            //眼部
            Circle rightEye = new Circle(70,60,5);
            Circle leftEye = new Circle(90,60,5);
            // 手部
            Line leftArm= new Line(110,130,160,130);
            leftArm.setStrokeWidth(3);
            Line rightArm= new Line(50,130,0,100);
            rightArm.setStrokeWidth(3);
            // 嘴巴
            Arc mouth = new Arc(80,85,15,10,360,180);
            mouth.setFill(null);
            mouth.setStrokeWidth(2);
            mouth.setStroke(Color.BLACK);//设置画笔颜色
            //纽扣
            Circle upperButton = new Circle(80,120,6);
            upperButton.setFill(Color.RED);
            Circle lowerButton = new Circle(80,140,6);
            lowerButton.setFill(Color.RED);


            Rectangle upperHat = new Rectangle(60,0,40,50);
            Rectangle lowerHat = new Rectangle(50,45,60,5);

            //将图案放入面板
            Group hat = new Group(upperHat,lowerHat);
            hat.setTranslateX(10);
            hat.setRotate(15);
            // 组成雪人
            Group snowman = new Group(baseSnowball,connectSnowball,headerSnowball,leftEye,rightEye,leftArm,rightArm,mouth,
                    upperButton,lowerButton,hat);
            snowman.setTranslateX(170);
            snowman.setTranslateY(50);
            // 太阳
            Circle sun = new Circle(450,50,30);
            sun.setFill(Color.GOLD);
            // 下面的蓝色背景
            Rectangle ground = new Rectangle(0,250,500,100);
            ground.setFill(Color.STEELBLUE);
            //文字栏目
            Text bannerName=new Text();
            bannerName.setText("理工学院软件学院");
            bannerName.setX(50);
            bannerName.setY(50);
            // 组成图形
            Group root = new Group(ground,sun,snowman,bannerName);
            Scene scene = new Scene(root,500,350,Color.LIGHTBLUE);//画板背景为浅蓝色
            stage.setScene(scene);
            stage.setTitle("Snowman");
            stage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

3、绘制饼图

3-1、题目

编写一段JavaFX小程序,保存为PieChat.java,给出家庭收入的消费状况,具体数据如下:
Rent and Utilities 35%
Transportation 15%
Food 15%
Education 25%
Miscellaneous 10%

要求:饼图的每个部分要有不同的颜色。给每个部分设定一个标签,该标签出现在饼图的外围部分(提示:使用Arc方法画扇形图)。
在这里插入图片描述

3-2、代码

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.stage.Stage;

import java.util.Arrays;
import java.util.List;

public class PieChat extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage stage) {
        // 创建饼图的数据列表
        List<PieChart.Data> pieChartData = Arrays.asList(

                new PieChart.Data("Miscellaneous", 10),
                new PieChart.Data("Education", 25),
                new PieChart.Data("Food", 15),
                new PieChart.Data("Transportation", 15),
                new PieChart.Data("Rent and Utilities", 35)
        );

        // 创建饼图
        PieChart pieChart = new PieChart();
        pieChart.getData().addAll(pieChartData);
        pieChart.setLabelLineLength(0);//设置标签线长度

        // 设置饼图的颜色
        int colorIndex = 0;
        for (PieChart.Data data : pieChartData) {
            data.getNode().setStyle("-fx-pie-color: " + getColor(colorIndex));
            colorIndex++;
        }

        pieChart.setLegendVisible(false);//取消图例
        // 创建场景
        Group root = new Group(pieChart);
        Scene scene = new Scene(root);

        stage.setTitle("Expense Pie Chart");
        stage.setScene(scene);
        stage.show();
    }
    // 获取不同的颜色
    private String getColor(int index) {
        String[] colors = { "PINK", "#0000FF", "#00FFFF","GREEN", "#FF0000"};
        return colors[index % colors.length];
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1115007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 Qt UDP通信局域网通信

前言 该例程经过实际验证可以正常使用,只简单的使用UDP中的单播模式(一对一), 所用测试系统在同一局域网,其中: QT版本:5.12 PC端UDP模式:单播 UDP通信目标:基于STM32F4+LWIP协议的以太网接口 调试助手: 虚拟串口+串口助手+UDP和TCP调试助手[编程人员必备]一、UDP通…

RIP,EIGRP,OSPF区别

1. 动态路由协议的作用是什么&#xff1f; 2. 路由协议都有哪些种类&#xff1f; 3. 如何判断路由协议的优劣&#xff1f; -- RIP&#xff0c;EIGRP&#xff0c;OSPF - 动态路由协议 -- 路由协议 - 路由器上的软件 -- 帮助路由器彼此之间同步路由表 -- 相互的传递…

MC 我的世界 模拟城市模拟大都市 模组下载及整合包导入详解

如何导入整合包 如果是从curseforge下载的整合包不需要解压的&#xff0c;直接按照下方步骤整就行了&#xff0c;把启动器和整合包复制到没有中文的路径下 双击启动exe文件&#xff0c;如果弹窗要更新啥的点确定即可&#xff0c;启动好了先登录账户&#xff0c;有正式版的登录…

攻防世界web篇-view_source

因为题目说了不能使用右键查看源代码 所以我直接F12来查看&#xff0c;但是F12只能查看不能复制flag 之后尝试view-source:http://61.147.171.105:57537/ 这里右键不受限制&#xff0c;可以直接粘贴复制

驱动开发day2(编程实现LED三盏小灯亮灭)

头文件&#xff08;head.h&#xff09;&#xff1a; #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0x50006000 #define PHY_LED2_MODER 0x50007000 #define PHY_LED3_MODER 0x50006000 #define PHY_LED1_ODR 0x50006014 #define PHY_LED2_ODR 0x50007014 #d…

揭示肠道菌群在儿童营养生长不良中的关键作用

营养不良的微生物 Malnourished Microbes 儿童营养不良是全球主要的健康负担&#xff0c;营养干预措施只能部分解决这一问题。儿童营养不良的慢性和急性形式均以多种生物系统紊乱为特征&#xff0c;包括新陈代谢、免疫和内分泌系统。 越来越多的证据支持肠道微生物组在调节这些…

踩坑记 BSS段的初始化

title: 踩坑记 BSS段的初始化 category_bar: true categories: blog tags:embedded date: 2023-10-20 19:23:05 前言 接手一个项目&#xff0c;调试全靠串口日志&#xff0c;测试同事测试产品的时候无法拿到日志&#xff0c;刚好产品RAM够大&#xff0c;且刚好有SD卡。所以就…

“传统”开发与AI开发的区别与联系(更新了GPT3.5的反馈)

1、传统开发的算法和软件整体&#xff0c;也可以看成是一个“大模型”&#xff0c;其中有不同层次的处理&#xff0c;最终能够完成从输入到输出的计算&#xff0c;不过&#xff0c;其中的计算都是人工定义的&#xff0c;一般依赖于研究成果的应用。研究成果在实际中的应用处理。…

伦敦银延时一定存在吗?

伦敦银市场是一个几乎24小时都在不停波动的市场&#xff0c;参与其中的人以短线交易为主&#xff0c;他们所追逐是行情短线波动所带来的收益&#xff0c;如果交易平台所提供的交易环境有问题&#xff0c;反复地出现延时、卡盘等的问题&#xff0c;恐怕会令投资的效果大打折扣&a…

window10/11 光学系统建模之Light Tools8.6 软件安装教程(亲测可用+附带免费资源可直接下载)

1.下载链接 &#xff08;免费分享&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1qVubyRSC93xT-GKeK-k3ow 提取码&#xff1a;vkho 2.安装顺序 即按照图里的1234的顺序先安装完注册表&#xff0c;驱动&#xff0c;和lighttools的程序 我个人在win10系统安装这些程…

vuecli2关于下载本地取环境变量没问题部署后路径取不到环境变量问题解决

功能 下载功能,用a标签实现下载 代码错误思路分析 解决办法可以忽略直接看下面 解决思路 在每个config文件中都定义了file_url,本地运行没有问题,但是部署到服务器开发环境, 拿到的是生产环境的FILE_URL地址 首先看了流水线-构建配置-编译配置-编译脚本里的打包命令: ** 本…

澎湃OS上线:小米告别MIUI,跟小米汽车Say Hi

作者 | Amy 编辑 | 德新 10月17日&#xff0c;雷军发博官宣&#xff0c;「小米将启用全新操作系统&#xff0c;小米澎湃OS&#xff08;Xiaomi HyperOS&#xff09;」。 短短几百字的微博&#xff0c;数次提到了「小米汽车」&#xff1a; 小米向人车家全生态迈进&#xff0c;…

Kotlin笔记(六):泛型的高级特性

前面学习了Kotlin中的泛型的基本用法,跟Java中的泛型大致相同&#xff0c;Kotlin在泛型方面还提供了不少特有的功能&#xff0c;掌握了这些功能&#xff0c;你将可以更好玩转Kotlin&#xff0c;同时还能实现一些不可思议的语法特性&#xff0c;那么我们自然不能错过这部分内容了…

“30岁现象”揭示职场困境:职业瓶颈还是发展停滞?出路在何处?

“30岁现象”是指在职场上&#xff0c;30岁左右的员工面临一系列挑战和困境的一种现象。 以下是一些表现&#xff1a; 首先&#xff0c;许多30岁左右的员工会遭遇职业瓶颈&#xff0c;他们可能发现自己在职业发展上遇到了阻碍&#xff0c;难以再进一步。这可能是由于自身能力…

Spring Security基本认证(2)

前言&#xff1a; 对于安全管理框架而言&#xff0c;认证功能可以说是一切的起点&#xff0c;所以我们要研究Spring Security, 就要从最基本的认证开始。在Spring Security中&#xff0c;对认证功能做了大量的封装&#xff0c;以至于开发者只需要稍微配置一下就能使用认证功能&…

VBA_MF系列技术资料1-207

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于定…

TCP通信实战:模拟BS系统

1、之前的客户端都是什么样的 其实就是CS架构&#xff0c;客户端是需要我们自己开发实现的 2、BS结构是什么样的&#xff0c;需要开发客户端吗&#xff1f; 浏览器访问服务端&#xff0c;不需要开发客户端 注意&#xff1a;服务端必须给浏览器响应HTTP协议格式的数据&#xff0…

CNN——卷积神经网络

文章目录 多层感知机&#xff08;MLP&#xff0c;Multilayer Perceptron&#xff09;神经网络定义MLP与神经网络的异同相同之处&#xff1a;不同之处&#xff1a;总结 为什么要使用神经网络CNN卷积层&#xff1a;池化层&#xff1a;全连接层&#xff1a; 卷积神经网络的优势pad…

Java持久层框架:MyBatis介绍

MyBatis 概述 概述 MyBatis&#xff0c;是支持定制化 SQL 、存储过程和高级映射的优秀持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用 XML 或注解来配置和映射原生信息&#xff0c;将接口和 Java 的 POJOs&#xff08;Plain …

NVIDIA NCCL 源码学习(十一)- ring allreduce

之前的章节里我们看到了nccl send/recv通信的过程&#xff0c;本节我们以ring allreduce为例看下集合通信的过程。整体执行流程和send/recv很像&#xff0c;所以对于相似的流程只做简单介绍&#xff0c;主要介绍ring allreduce自己特有内容。 单机 搜索ring 在nccl初始化的过…