JAVA第三课:Scanner,if,switch, for, while,do...while等练习
文章目录0. 三大结构1. Scanner2. if3. switch4. for5. while6.do...while7. break和continue0. 三大结构顺序结构:从上至下,依次执行选择结构:if, switch,也叫分支结构循环结构:for, while, do…while1. Scanner输入一个数字,并输出import java.util.Scanner;class Tes
文章目录
0. 三大结构
- 顺序结构:从上至下,依次执行
- 选择结构:if, switch,也叫分支结构
- 循环结构:for, while, do…while
1. Scanner
-
输入一个数字,并输出
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个数,并求和
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); } } -
输入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);//输出结果 } } -
输入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
-
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); } } } -
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); } } } -
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
-
输入一个数,输出对应星期几
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; } } } -
输入一个数字,输出对应月份
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; } } } -
输入一个数字,输出对应季节
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+⋯+(n−1)+n 的值,其中正整数 n n n 不大于 100。
输入格式:输入一个正整数 n n n。
输出格式:输出一个正整数,表示最后求和的答案。
样例输入:100
样例输出:5050
数据保证, 1 ≤ n ≤ 100 1 \leq n \leq 100 1≤n≤100。
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(n≤1000) 位评委给选手打分,分值从 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 3≤n≤1000,每个评委打出的分值为为 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} 10−3 即视为正确。
样例输入:
2
1.0 3.0
样例输出:2.0000
对于全部的测试点,保证 1 ≤ n ≤ 100 1 \leq n \leq 100 1≤n≤100, ∣ a i ∣ ≤ 1 0 4 |a_i| \leq 10^4 ∣ai∣≤104。
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 1≤n<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,a2…an,以空格隔开。
输出格式:输出一个整数,表示这 n n n 个整数的极差。
样例输入:
6
4 1 5 1 4 1
样例输出:4
数据保证, 1 ≤ n ≤ 100 1 \leq n\leq 100 1≤n≤100, 0 ≤ a i ≤ 1000 0\le a_i \le 1000 0≤ai≤1000。
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 1≤X,Y≤1.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 1≤L≤105。
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);
}
}
更多推荐

所有评论(0)