java第一周实验

作者 by 超米 / 2024-03-19 / 2 评论 / 109 个足迹

本周实验为

1.计算斐波那契数列

实验1 斐波那契数列(文件:Fibonacci.java)
以下数列为斐波那契数列(Fibonacci sequence)。这个数列前两个元素,Fib(0)和Fib(1)的值分别为0和1,接下来的每一元素为前两个元素之和。因此,斐波那契数列的前几个元素如下:

Fib(0) = 0
Fib(1) = 1
Fib(2) = 1   (0+1)
Fib(3) = 2   (1+1)
Fib(4) = 3   (1+2)
Fib(5) = 5   (2+3)
编写一个程序,显示初项为Fib(0)末项小于10000的斐波那契数列。程序运行结果如下:

2024-03-19T05:18:16.png
这个程序需要一直运行,直到出现最大项,所以你需要使用while循环,循环条件如下:
while(term <MAX_TERM_VALUE)
最大元素值用一个常量MAX_TERM_VALUE表示。


参考代码:

import acm.program.*;
public class Fibonacci extends ConsoleProgram {
private static final int MAX_TERM_VALUE = 1000000000;
    public void run() {
    int n = readInt("请输入要计算的斐波那契数列的项数:");  // 读取用户输入的斐波那契数列项数
    for (int i = 0; i < n; i++) {  // 循环计算斐波那契数列,并打印结果
        int fibonacci = fibonacci(i);  // 调用斐波那契数列计算函数
        if (fibonacci > MAX_TERM_VALUE) {  // 判断计算结果是否超过最大值
            break;  // 如果超过最大值,则结束循环
        }
        println(fibonacci);  // 打印计算结果
    }
}

// 计算斐波那契数列的函数
public int fibonacci(int n) {
    if (n <= 1) {  // 斐波那契数列的前两个数为 0 和 1
        return n;  // 直接返回数值
    }
    return fibonacci(n - 1) + fibonacci(n - 2);  // 递归计算斐波那契数列的第 n 个数
    }
 }

2.绘制一张机器人的脸

实验2画一个机器人的脸(文件:RobotFace.java)
你需要画一张机器人脸,如下所示:
2024-03-19T05:20:23.png

这张简单的脸包含4个部分——一个头,两只眼睛和一张嘴——排列如下:
头:头是一个大的矩形,宽高用常量HEAD_WIDTH和HEAD_HEIGHT表示。填充色为灰色,边框为黑色。
眼睛:眼睛是两个圆,半径单位为像素,用常量EYE_RADIUS表示。眼睛中心离左右边的距离为宽的1/4,离上边框距离为高的1/4,黄色。
嘴:嘴在x轴上居中,在y轴上距底部距离为头高的1/4,嘴的宽高用常量MOUTH_WIDTH和MOUTH_HEIGHT表示,白色。
最后,这张机器人脸需要在图像窗口中居中显示。


参考代码:

import acm.graphics.*;
import acm.program.*;
import java.awt.*;

public class RobotFace extends GraphicsProgram {

public void run() {
    addFace(getWidth() / 2, getHeight() / 2);
}

 // 添加整个机器人脸部的方法
private void addFace(double cx, double cy) {
    addHead(cx, cy); // 添加头部
    addEye(cx - HEAD_WIDTH / 4, cy - HEAD_HEIGHT / 4); // 添加左眼
    addEye(cx + HEAD_WIDTH / 4, cy - HEAD_HEIGHT / 4); // 添加右眼
    addMouth(cx, cy + HEAD_HEIGHT / 4); // 添加嘴巴
}

 // 添加头部的方法
private void addHead(double cx, double cy) {
    GRect head = new GRect(cx - HEAD_WIDTH / 2, cy - HEAD_HEIGHT / 2, HEAD_WIDTH, HEAD_HEIGHT);
    head.setFilled(true);
    head.setFillColor(Color.GRAY);
    add(head); // 将头部添加到画布中
}

 // 添加眼睛的方法
private void addEye(double cx, double cy) {
    GOval eye = new GOval(cx - EYE_RADIUS, cy - EYE_RADIUS, 2 * EYE_RADIUS, 2 * EYE_RADIUS);
    eye.setFilled(true);
    eye.setFillColor(Color.YELLOW);
    add(eye); // 将眼睛添加到画布中
}

 // 添加嘴巴的方法
private void addMouth(double cx, double cy) {
    GRect mouth = new GRect(cx - MOUTH_WIDTH / 2, cy - MOUTH_HEIGHT / 2, MOUTH_WIDTH, MOUTH_HEIGHT);
    mouth.setFilled(true);
    mouth.setFillColor(Color.WHITE);
    add(mouth); // 将嘴巴添加到画布中
}

 // 定义一些常量
private static final int HEAD_WIDTH = 100;
private static final int HEAD_HEIGHT = 150;
private static final int EYE_RADIUS = 10;
private static final int MOUTH_WIDTH = 60;
private static final int MOUTH_HEIGHT = 20;
}


3.求三个整数最大数

实验3 任意输入三个整数,求出最大数并输出。(文件:MaxNumber.java)


参考代码:

   /*
  * 这个程序通过读取用户输入的三个整数
  * 然后调用getMax()方法来获取这三个整数中的最大值
  * 并将最大值打印出来。getMax()方法接受三个参数
 * 分别是三个整数a、b、c
 * 然后通过比较它们的大小来找到最大值。
 * 程序的运行结果会显示最大数是哪一个。
 */
 
import acm.program.ConsoleProgram;
 public class MaxNumber extends ConsoleProgram{

public void run()  {
    long a = readInt("请输入第一个整数:");
    long b = readInt("请输入第二个整数:");
    long c = readInt("请输入第三个整数:");
    long max = getMax(a, b, c);
    println("最大数是:" + max);
}

public long getMax(long a, long b, long c) {
    long max = a;
    if (b > max) {
        max = b;
    }
    if (c > max) {
        max = c;
    }
    return max;
}
    
  
}




独特见解

 评论 2 条