循环
指令 重复、反复需要去操作的内容 循环
sout "签到";
sout "签到"
for
for(表达式1;表达式2;表达式3){
循环体(表达式4); // 需要反复做的XXXX
}
for(int i = 1; i <= 3; i++){
System.out.println(i);
}
- 表达式1就是变量的初始化
- 表达式2就是范围
- 表达式3就是自增或者自减
- 循环体内容自定
执行顺序:
-
执行1执行一次
-
表达式2 true
-
表达式4
-
表达式3(1->2)
-
表达式2 true
-
表达式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);
}
这里打印完之后发现第一项没有打印出来,
网友评论