0. 三大结构

  1. 顺序结构:从上至下,依次执行
  2. 选择结构:if, switch,也叫分支结构
  3. 循环结构:for, while, do…while

1. Scanner

  1. 输入一个数字,并输出

    import java.util.Scanner;
    
    class Test{
    	public static void main(String[] args) {
    		//创建键盘录入对象
    		Scanner sc= new Scanner(System.in);
    		System.out.println("请输入一个整数:");
    		int number= sc.nextInt();
    		System.out.println("number = "+number);
    	}
    }
    
  2. 输入2个数,并求和

    import java.util.Scanner;
    
    class Test{
    	public static void main(String[] args) {
    		//创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    
    		System.out.println("请输入第一个数据:");
    		int firstNumber = sc.nextInt();
    		System.out.println("请输入第二个数据:");
    		int secondNumber = sc.nextInt();
    		int sum = firstNumber + secondNumber;
    		//输出结果
    		System.out.println("数据和是:"+sum);
    	}
    }
    
  3. 输入2个数,返回最大值

    class Test{
    	public static void main(String[] args) {
    		//创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    
    		//获取键盘录入数据
    		System.out.println("请输入第一个数据:");
    		int a = sc.nextInt();
    		System.out.println("请输入第二个数据:");
    		int b = sc.nextInt();
    		int max = (a>b)?a:b;//获取数据最大值
    		System.out.println("最大值是:"+max);//输出结果
    	}
    }
    
  4. 输入2个数,判断2个数是否相等

    import java.util.Scanner;
    
    class Test {
    	public static void main(String[] args) {
    		//创建键盘录入对象
    		Scanner sc = new Scanner(System.in);
    
    		//获取键盘录入数据
    		System.out.println("请输入第一个数据:");
    		int a = sc.nextInt();
    		System.out.println("请输入第二个数据:");
    		int b = sc.nextInt();
    
    		//比较是否相等
    		boolean flag =  (a==b)?true:false;
    		//boolean flag = (a==b);
    
    		//输出结果
    		System.out.println(flag);
    	}
    }
    

2. if

  1. if 输出 flag 的值

    public class Test{
    	public static void main(String args[]){
    		boolean flag = true;
    		if(flag){
    			System.out.println("flag="+flag);
    		}
    
    		if(flag){
    			System.out.println("flag="+flag);
    		}else{
    			System.out.println("flag="+flag);
    		}
    		
    		if(flag){
    			System.out.println("flag="+flag);
    		}else if(flag){
    			System.out.println("flag="+flag);
    		}else{
    			System.out.println("flag="+flag);
    		}
    	}
    }
    
  2. if 求2个数的最大值

    import java.util.Scanner;
    
    class Test {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int a = sc.nextInt();
    		int b = sc.nextInt();
    
    		if(a > b){
    			System.out.println(a);
    		}else{
    			System.out.println(b);
    		}
    	}
    }
    
  3. if 判断2个数是否相等

    import java.util.Scanner;
    
    class Test {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int a = sc.nextInt();
    		int b = sc.nextInt();
    		boolean flag = (a==b);
    
    		if(flag){
    			System.out.println(flag);
    		}else{
    			System.out.println(flag);
    		}
    	}
    }
    

3. switch

  1. 输入一个数,输出对应星期几

    import java.util.Scanner;
    
    class Test {
    	public static void main(String[] args) {
    		System.out.println("请输入一个1~7的数字:");
    		Scanner sc = new Scanner(System.in);
    		int week = sc.nextInt();
    		switch(week){
    			case 1: System.out.println("星期一"); break;
    			case 2: System.out.println("星期二"); break;
    			case 3: System.out.println("星期三"); break;
    			case 4: System.out.println("星期四"); break;	
    			case 5: System.out.println("星期五"); break;	
    			case 6: System.out.println("星期六"); break;	
    			case 7: System.out.println("星期日"); break;
    			default: System.out.println("输入错误"); break;
    		}
    	}
    	public static void test01(String[] args) {
        	// 1. 输入一个数,输出对应星期几
        	int num = 7;
        	switch (num) { // 多路开关
                case 1: System.out.println("Monday"); break;
                case 2: System.out.println("Tuesday"); break;
                case 3: System.out.println("Wednesday"); break;
                case 4: System.out.println("Thursday"); break;
                case 5: System.out.println("Friday"); break;
                case 6: System.out.println("Saturday "); break;
                case 7: System.out.println("Sunday"); break;
                default: System.out.println("error"); break;
            }
        }
    }
    
  2. 输入一个数字,输出对应月份

    import java.util.Scanner;
    
    public class Test {
    	public static void main(String[] args) {
    		// 2. 输入一个数字,输出对应月份
    		Scanner sc = new Scanner(System.in);
    		int num = sc.nextInt();
    		switch (num) {
    			case 1: System.out.println("January"); break;
    			case 2: System.out.println("February"); break;
    			case 3: System.out.println("March"); break;
    			case 4: System.out.println("April"); break;
    			case 5: System.out.println("May"); break;
    			case 6: System.out.println("June"); break;
    			case 7: System.out.println("July"); break;
    			case 8: System.out.println("August"); break;
    			case 9: System.out.println("September"); break;
    			case 10: System.out.println("October"); break;
    			case 11: System.out.println("November"); break;
    			case 12: System.out.println("December"); break;
    			default: System.out.println("Error"); break;
    		}
    	}
    }
    
  3. 输入一个数字,输出对应季节

    import java.util.Scanner;
    
    class Test {
    	public static void main(String[] args) {
    		System.out.println("请输入月份:");
    		Scanner sc = new Scanner(System.in);
    		int month = sc.nextInt();
    		switch(month) {
    			case 1:
    			case 2:
    			case 12:
    				System.out.println("冬季"); break;
    			case 3:
    			case 4:
    			case 5:
    				System.out.println("春季"); break;
    			case 6:
    			case 7:
    			case 8:
    				System.out.println("夏季"); break;
    			case 9:
    			case 10:
    			case 11:
    				System.out.println("秋季"); break;
    			default:
    				System.out.println("你输入的月份有误");
    		}
    	}
    }
    

注意事项
(1)case 后面只能是常量,不能是变量,而且多个case后面的值不能出现相同的。
(2)default 可以省略。一般不建议。除非判断的值是固定的。
(3)break可以省略。最后一个肯定是没有任何问题的,中间的省略也是可以的,但是不建议,因为可能对我们想要的结果产生影响。
(4)default的位置不一定要在最后,可以在任何和case相对应的位置。但是这个时候,最好加上break。
(5)switch语句的结束条件: a. 遇到break;b. 执行到程序的末尾。

4. for

循环要素
1.初始化条件
2.条件判断
3.条件增量
4.循环体

for循环执行10次

public class Test {
   public static void main(String args[]) {
     // for(1.初始化条件; 2.条件判断; 3.条件增量){ 4.循环体 }
      for(int i = 0; i < 10; i++) {
         System.out.println("i = " + i );
      }
   }
}

5. while

while循环执行10次

public class Test{
	public static void main(String args[]){
		int x = 1; 			// 1.初始化条件
		while(x <= 10) { 	// 2.条件判断
			System.out.println("x = "+x);// 4.循环体
			x ++; 			// 3.条件增量
		}
	}
}

6.do…while

do…while循环执行10次

import java.util.Scanner;

class Test {
	public static void main(String[] args) {
		int x = 1; 		// 1.初始化条件
		do {
			System.out.println("x = "+x);// 4.循环体
			x ++;		// 3.条件增量
		}while(x <= 10);// 2.条件判断
	}
}

死循环:
while(true) {}
do {} while(true);

7. break和continue

break是结束当前循环,
continue是结束本次循环,进行下次循环,
使用break就已经不再循环了
使用continue还要继续进行循环
在switch case里,只能用break,而不能用continue

import java.util.Scanner;
	
class Test {
	public static void main(String[] args) {
//		1 2 3 4 5 6 7 8 9 10
		for(int i=1; i<=10; i++) {
			System.out.print(i+" ");
		}
		System.out.println();
		
//		1 2 3 4
		for(int i=1; i<=10; i++) {
			if(i==5) break;
			System.out.print(i+" ");
		}// break的退出位置
		System.out.println();
		
//		1 2 3 4 6 7 8 9 10
		for(int i=1; i<=10; i++) {
			if(i==5) continue;
			System.out.print(i+" ");
		}
		System.out.println();
	}
}

8. return 结束

class Test{
	public static void main(String[] args) {
		for(int i=1; i<=10; i++){
			if(i==3) return;
			System.out.println("i = " + i);
		}
		System.out.println("over");
	}
}

9. 练习题目

题目均来源洛谷OJ

P5722 【深基4.例11】数列求和

P5722 【深基4.例11】数列求和
计算 1 + 2 + 3 + ⋯ + ( n − 1 ) + n 1+2+3+\cdots+(n-1)+n 1+2+3++(n1)+n 的值,其中正整数 n n n 不大于 100。

输入格式:输入一个正整数 n n n
输出格式:输出一个正整数,表示最后求和的答案。

样例输入:100
样例输出:5050

数据保证, 1 ≤ n ≤ 100 1 \leq n \leq 100 1n100

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), s = 0;
        for (int i = 1; i <= n; i++)
            s += i;
        System.out.println(s);
    }
}

P5726 【深基4.习9】打分

P5726 【深基4.习9】打分
现在有 n ( n ≤ 1000 ) n(n \le 1000) n(n1000) 位评委给选手打分,分值从 0 0 0 10 10 10。需要去掉一个最高分,去掉一个最低分(如果有多个最高或者最低分,也只需要去掉一个),剩下的评分的平均数就是这位选手的得分。现在输入评委人数和他们的打分,请输出选手的最后得分,精确到 2 2 2 位小数。

输入格式:
第一行输入一个正整数 n n n,表示有 n n n 个评委。
第二行输入 n n n 个正整数,第 i i i 个正整数表示第 i i i 个评委打出的分值。

输出格式:输出一行一个两位小数,表示选手的最后得分。

样例输入:

5
9 5 6 8 9

样例输出:7.67

数据保证, 3 ≤ n ≤ 1000 3 \leq n \leq 1000 3n1000,每个评委打出的分值为为 0 0 0 10 10 10(含 0 0 0 10 10 10)之间的整数。

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), s = 0, mx = 0, mn = 10;
        for (int i = 1; i <= n; i++) {
            int x = sc.nextInt();
            if (mx < x)
                mx = x;
            if (mn > x)
                mn = x;
            s += x;
        }
        System.out.printf("%.2f", (s - mx - mn) * 1.0 / (n - 2));
    }
}

B2055 均值

B2055 均值
给出一组样本数据,计算其均值。

输入格式:
输入有两行,第一行包含一个整数,表示样本容量 n n n
第二行包含 n n n 个浮点数 a i a_i ai,代表各个样本数据。

输出格式:输出一行,包含一个浮点数,表示均值。选手输出与标准输出的相对误差或绝对误差不超过 1 0 − 3 10^{-3} 103 即视为正确。

样例输入:

2
1.0 3.0

样例输出:2.0000

对于全部的测试点,保证 1 ≤ n ≤ 100 1 \leq n \leq 100 1n100 ∣ a i ∣ ≤ 1 0 4 |a_i| \leq 10^4 ai104

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        double s = 0;
        for (int i = 1; i <= n; i++) {
            double x = sc.nextDouble();
            s += x;
        }
        System.out.printf("%.4f", s / n);
    }
}

B2060 满足条件的数累加

B2060 满足条件的数累加
将正整数 m m m n n n 之间(包括 m m m n ) n) n) 能被 17 17 17 整除的数累加,其中, 0 < m < n < 1000 0<m<n<1000 0<m<n<1000

输入格式:一行,包含两个整数 m m m n n n,其间,以一个空格间隔。
输出格式:输出一行,包行一个整数,表示累加的结果。

样例输入:50 85
样例输出:204

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt(), n = sc.nextInt(), s = 0;
        for (int i = m; i <= n; i++) {
            if (i % 17 == 0)
                s += i;
        }
        System.out.println(s);
    }
}

B2057 最高的分数

B2057 最高的分数
孙老师讲授的《计算概论》这门课期中考试刚刚结束,他想知道考试中取得的最高分数。

输入格式:
输入两行,第一行为整数 n n n 1 ≤ n < 100 1 \le n<100 1n<100),表示参加这次考试的人数。
第二行是这 n n n 个学生的成绩,相邻两个数之间用单个空格隔开。所有成绩均为 0 0 0 100 100 100 之间的整数。

输出格式:输出一个整数,即最高的成绩。

样例输入:

5
85 78 90 99 60

样例输出:99

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), mx = 0;
        for (int i = 1; i <= n; i++) {
            int x = sc.nextInt();
            if (mx < x)
                mx = x;
        }
        System.out.println(mx);
    }
}

B2061 整数的个数

B2061 整数的个数
给定 k k k 1 < k < 100 1<k<100 1<k<100)个正整数,其中每个数都是大于等于 1 1 1,小于等于 10 10 10 的数。写程序计算给定的 k k k 个正整数中, 1 1 1 5 5 5 10 10 10 出现的次数。

输入格式:输入有两行,第一行包含一个正整数 k k k,第二行包含 k k k 个正整数,每两个正整数用一个空格分开。
输出格式:输出有三行,第一行为 1 1 1 出现的次数,,第二行为 5 5 5 出现的次数,第三行为 10 10 10 出现的次数。

样例输入:

5
1 5 8 10 5

样例输出:

1
2
1
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), s1 = 0, s5 = 0, s10 = 0;
        for (int i = 1; i <= n; i++) {
            int x = sc.nextInt();
            if (x == 1) s1++;
            if (x == 5) s5++;
            if (x == 10) s10++;
        }
        System.out.println(s1);
        System.out.println(s5);
        System.out.println(s10);
    }
}

P5724 【深基4.习5】求极差 / 最大跨度值

P5724 【深基4.习5】求极差 / 最大跨度值
给出 n n n n n n 个整数 a i a_i ai,求这 n n n 个整数中的极差是什么。极差的意思是一组数中的最大值减去最小值的差。

输入格式:
第一行输入一个正整数 n n n,表示整数个数。
第二行输入 n n n 个整数 a 1 , a 2 … a n a_1,a_2 \dots a_n a1,a2an,以空格隔开。

输出格式:输出一个整数,表示这 n n n 个整数的极差。

样例输入:

6
4 1 5 1 4 1

样例输出:4

数据保证, 1 ≤ n ≤ 100 1 \leq n\leq 100 1n100 0 ≤ a i ≤ 1000 0\le a_i \le 1000 0ai1000

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(), mx = 0, mn = 1000;
        for (int i = 1; i <= n; i++) {
            int x = sc.nextInt();
            if (mx < x) mx = x;
            if (mn > x) mn = x;
        }
        System.out.println(mx - mn);
    }
}

B2137 判决素数个数

B2137 判决素数个数
X X X Y Y Y 之间的素数个数(包括 X X X Y Y Y)。

输入格式:两个整数 X X X Y Y Y 1 ≤ X , Y ≤ 1.1 × 1 0 6 1 \le X,Y \le 1.1 \times 10^6 1X,Y1.1×106)。
输出格式:输出一个整数,表示 X , Y X, Y X,Y 之间的素数个数(包括 X X X Y Y Y)。

样例输入:1 100
样例输出:25

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt(), y = sc.nextInt(), cnt = 0;
        if (x > y) {
            int t = x;
            x = y;
            y = t;
        }
        for (int i = x; i <= y; i++) {
            boolean flag = true;
            for (int j = 2; j <= i / j; j++)
                if (i % j == 0) {
                    flag = false;
                    break;
                }
            if (flag && i > 1) {
                cnt++;
            }
        }
        System.out.println(cnt);
    }
}

P5723 【深基4.例13】质数口袋

P5723 【深基4.例13】质数口袋
小 A 有一个质数口袋,里面可以装各个质数。他从 2 2 2 开始,依次判断各个自然数是不是质数,如果是质数就会把这个数字装入口袋。

口袋的负载量就是口袋里的所有数字之和。

但是口袋的承重量有限,装的质数的和不能超过 L L L。给出 L L L,请问口袋里能装下几个质数?将这些质数从小往大输出,然后输出最多能装下的质数的个数,数字之间用换行隔开。

输入格式:一行一个正整数 L L L
输出格式:将这些质数从小往大输出,然后输出最多能装下的质数个数,所有数字之间有一空行。

样例输入 #1:100
样例输出 #1:

2
3
5
7
11
13
17
19
23
9

样例输入 #2:5
样例输出 #2:

2
3
2

样例输入 #3:11
样例输出 #3:

2
3
5
3

数据保证, 1 ≤ L ≤ 10 5 1 \le L \le {10}^5 1L105

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int L = sc.nextInt(), cnt = 0;
        for (int i = 2; i <= L; i++) {
            boolean flag = true;
            for (int j = 2; j <= i / j; j++)
                if (i % j == 0) {
                    flag = false; break;
                }
            if (flag && L - i >= 0) {
                System.out.println(i);
                L -= i; cnt++;
            }
        }
        System.out.println(cnt);
    }
}
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐