JAVA学习记录

java 循环

2022-09-08  本文已影响0人  杨三毛同志

循环

指令 重复、反复需要去操作的内容 循环

sout "签到";
sout "签到"

for

for(表达式1;表达式2;表达式3){
    循环体(表达式4); // 需要反复做的XXXX
}
for(int i = 1; i <= 3; i++){
    System.out.println(i);
}
  1. 表达式1就是变量的初始化
  2. 表达式2就是范围
  3. 表达式3就是自增或者自减
  4. 循环体内容自定

执行顺序:

计算1到100偶数的和:

      int sum = 0;
        for(int i = 1; i <= 100; i++){
            if(i % 2 == 0){
                sum = sum +i;
            }

        }
        System.out.println(sum);

打印出2000-3000的闰年

        for (int year = 2000; year <= 3000; year++){
            if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
                System.out.println(year);
            }
        }

输入五个学生的成绩,并计算总分、平均分、最高分

      double sum = 0;
        double max = 0;
        double avg = 0;
        for (int i = 1; i <= 5; i++) {
            System.out.println("请输入第" + i + "个学生的成绩");
            double grade = scanner.nextDouble();
            sum = sum + grade;
            avg = sum / i;
            if (max < grade) {
                max = grade;
            }
        }
        System.out.println("总分:" + sum);
        System.out.println("平均分:" + avg);
        System.out.println("最高分:" + max);

在这道题卡住了,没有想到要定义max进行循环比较替换。

判断一个数是否是质数

由题意可得出,除了1和0以外,因数个数大于2的就不是质数,因数个数等于2的是质数,所以定义一个变量n表示输入值的因数个数。

import java.util.Scanner;

public class Prime {
    public static void main(String[] args) {
        System.out.println("请输入数字:");
        Scanner scanner = new Scanner(System.in);
        int ipt = scanner.nextInt();
        int n = 0; //因数的个数
        for (int i = 1; i <= ipt; i++) {
            int m = ipt % i;
            if (m == 0) {
                n++;
            }
        }
        System.out.println("因数的个数" + n);
        if (n > 2) {
            System.out.println(ipt + "不是质数");
        } else {
            System.out.println(ipt + "是质数");
        }
    }
}

这里if的判断条件出现错误,因为忘记考虑1和0既不是质数也不是合数,所以条件应该改为:
    if(n == 2){
        System.out.println(ipt + "是质数")
    }else{
        System.out.println(ipt + "不是质数");
    }
        boolean flag = true;
        for (int i = 2; i < ipt; i++) {
            if (ipt % i == 0) {
                flag = false;
                break;
            }
        }
        if (flag) {
            System.out.println(ipt + "是质数");
        } else {
            System.out.println(ipt + "不是质数");
        }
除掉1和本身之后,如果有其他的因数就不是质数,所以数据范围设定为(2,ipt-1)

感觉大家布尔值都用的好厉害,我试着写了一下,有一个警告,说是if达到判定条件可以提前终止,于是加上了break之后警告就消失了,对break和布尔值的应用还是不太熟悉。

打印前20项斐波拉契数列:1,1,2,3,5,8,13,21......

public class Feibola {
    public static void main(String[] args) {
        int num1 = 1;
        int num2 = 1;
        for (int index = 1; index <= 10; index++) {
            System.out.println(num1);
            System.out.println(num2);
            num1 = num1 + num2;
            num2 = num1 + num2;
        }
    }
}

这里的index条件应该是10,因为循环体内单次循环就进行了两次加法运算,打印了两个数,所以需要除以二,这是我在这里产生的问题。

        int num1 = 0;
        int num2 = 1;
        for (int index = 1; index <= 20; index++) {
            int sum = num1 + num2;
            num1 = num2;
            num2 = sum;
            System.out.println(sum);
        }

这里打印完之后发现第一项没有打印出来,

上一篇 下一篇

猜你喜欢

热点阅读