java基础练习题


1:选择结构

1、小王参加考试,如果成绩大于85则奖励平衡车一辆

 1 import java.util.Scanner;
 2 
 3 public class Text {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入你的考试成绩");
 7         int score=input.nextInt();
 8         if (score>85){
 9             System.out.println("奖励平衡车一辆");
10         }
11     }
12 }

2、张三参加歌唱比赛如果得奖,就奖励劳斯莱斯一辆,否则打扫卫生一年

 1 public class Text1 {
 2     public static void main(String[] args) {
 3         Scanner input=new Scanner(System.in);
 4         System.out.println("请输入你的比赛名次");
 5         int score=input.nextInt();
 6         if (score==1){
 7             System.out.println("奖励劳斯莱斯一辆");
 8         }else {
 9             System.out.println("打扫卫生一年");
10         }
11     }
12 }

3、小黑打算买车: 如果他有500万就卖劳斯莱斯 如果他有200万就买马萨拉蒂;如果他有100万就买宝马;如果他有50万卡迪拉克;如果他有10万就买比亚迪; 如果他有5万就买五菱宏光;否则就扫个共享单车

 1 import java.util.Scanner;
 2 
 3 public class Text2 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入你的钱数");
 7         int num=input.nextInt();
 8         if (num>=500){
 9             System.out.println("劳斯莱斯一辆");
10         }else if (num>=200){
11             System.out.println("玛莎拉蒂一辆");
12         }else if (num>=100){
13             System.out.println("宝马一辆");
14         }else if (num>=50){
15             System.out.println("凯迪拉克一辆");
16         }else if (num>=10){
17             System.out.println("比亚迪一辆");
18         }else if (num>=5){
19             System.out.println("五菱宏光一辆");
20         }else {
21             System.out.println("扫个共享单车");
22         }
23     }
24 }

4、寒冰参加歌唱比赛,如果获得前16名就可以参加接下来的八强比赛,八强比赛要求根据歌手的性别进行分组

 1 import java.util.Scanner;
 2 
 3 public class Text3 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入你的名次");
 7         int score=input.nextInt();
 8         if (score<16){
 9             System.out.println("请输入你的性别");
10            String sex=input.next();
11            if (sex.equals("男")){
12                System.out.println("进入男子组");
13            }else {
14                System.out.println("进入女子组");
15            }
16         }else {
17             System.out.println("进入啦啦队");
18         }
19     }
20 } ​

5、使用switch实现输出学生的评分等级,A:100,B:99-90,C:89-80,D:79-70,E:69-60,F:60以下

 1 import java.util.Scanner;
 2 
 3 public class Text4 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入你的成绩");
 7         int score=input.nextInt();
 8         switch (score/10){
 9             case 10:
10                 System.out.println("A");
11                 break;
12             case 9:
13                 System.out.println("B");
14                 break;
15             case 8:
16                 System.out.println("C");
17                 break;
18             case 7:
19                 System.out.println("D");
20                 break;
21             case 6:
22                 System.out.println("E");
23                 break;
24             default:
25                 System.out.println("F");
26                 break;
27 
28         }
29     }
30 }

6、使用switch实现简单的+、-、*、/计算器

 1 import java.util.Scanner;
 2 
 3 public class Text5 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入a:");
 7         int a = input.nextInt();
 8         System.out.println("请输入b:");
 9         int b = input.nextInt();
10         System.out.println("请输入");
11         String str = input.next();
12         switch (str){
13             case "+":
14                 System.out.println(a+b);
15             break;
16             case "-":
17                 System.out.println(a-b);
18             break;
19             case "*":
20                 System.out.println(a*b);
21             break;
22             case "/":
23                 System.out.println(a/b);
24             break;
25 //            default:
26 //                System.out.println();
27 //                break;
28         }
29     }
30 }

7、实现水仙花数(三位数,153=1^3+5^3+3^3)

 1 import java.util.Scanner;
 2 
 3 public class Text6 {
 4     public static void main(String[] args) {
 5         //实现水仙花数(三位数,153=1^3+5^3+3^3)
 6         Scanner input=new Scanner(System.in);
 7         System.out.println("请输入一个三位数");
 8         int num = input.nextInt();
 9         int bWei=num/100;
10         int sWei=num/10%10;
11         int gWei=num%10;
12         if (num==(bWei*bWei*bWei+sWei*sWei*sWei+gWei*gWei*gWei)){
13             System.out.println("是一个水仙花数");
14         }else {
15             System.out.println("不是水仙花数");
16         }
17 
18     }
19 }

8、输入小明的考试成绩,显示所获奖励成绩==100分,爸爸给他买辆车;100分>成绩>=90分,妈妈给他买MP4;90分>成绩>=60分,妈妈给他买本参考书;成绩<60分,什么都不买(多重if)

 1 import java.util.Scanner;
 2 
 3 public class Text7 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入你的成绩");
 7         int score=input.nextInt();
 8         if (score==100){
 9             System.out.println("获得一辆车");
10         }else if (score>=90 && score<100){
11             System.out.println("获得一个MP4");
12         }else if (score>=60 && score<90){
13             System.out.println("获得一本参考书");
14         }else {
15             System.out.println("什么都没有");
16         }
17     }
18 }

9、张三为他的手机设定了自动拨号按1:拨爸爸的号;按2:拨妈妈的号;按3:拨爷爷的号;按4:拨奶奶的号

 1 import java.util.Scanner;
 2 public class Text8 {
 3     public static void main(String[] args) {
 4         Scanner input=new Scanner(System.in);
 5         System.out.println("请输入号码");
 6         int num=input.nextInt();
 7         switch (num){
 8             case 1:
 9                 System.out.println("拨爸爸的号");
10                 break;
11             case 2:
12                 System.out.println("拨妈妈的号");
13                 break;
14             case 3:
15                 System.out.println("拨爷爷的号");
16                 break;
17             case 4:
18                 System.out.println("拨奶奶的号");
19                 break;
20             default:
21                 System.out.println("拨打错误");
22                 break;
23         }
24     }
25 }

10、输入一个数判定这个数是偶数还是奇数(if实现)

 1 import java.util.Scanner;
 2 
 3 public class Text9 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入一个数");
 7         int num = input.nextInt();
 8         if (num%2==0){
 9             System.out.println("这是一个偶数");
10         }else {
11             System.out.println("这是一个奇数");
12         }
13     }
14 }

11、输入一个数,判定这个数是工作日,还是休息日(switch)

 1 import java.util.Scanner;
 2 
 3 public class Text10 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入一个数");
 7         int num = input.nextInt();
 8         switch (num){
 9             case 1:
10             case 2:
11             case 3:
12             case 4:
13             case 5:
14                 System.out.println("工作日");
15                 break;
16             case 6:
17             case 7:
18                 System.out.println("休息日");
19                 break;
20         }
21     }
22 }

12、一年有四季,每季3个月。其中,12月、1月和2月为冬季,3月、4月和5月为春季……本实例将根据用户输入的月份来判断季节(用Switch语句实现)

 1 import java.util.Scanner;
 2 
 3 public class Text11 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入一个月份");
 7         int num = input.nextInt();
 8         switch (num){
 9             case 1:
10             case 2:
11                 System.out.println("冬天");
12                 break;
13             case 3:
14             case 4:
15             case 5:
16                 System.out.println("春天");
17                 break;
18             case 6:
19             case 7:
20             case 8:
21                 System.out.println("夏天");
22                 break;
23             case 9:
24             case 10:
25             case 11:
26                 System.out.println("秋天");
27                 break;
28             case 12:
29                 System.out.println("冬天");
30                 break;
31         }
32     }
33 }

13、写一个用户登陆小程序,从控制台接收用户名和密码。 用户名:uip 密码:123456 如果用户名错误输出“非法用户!”,如果密码错误输出“密码错误!”,如果都正确输出“恭喜,登陆成功“!(用if…else语句实现)

 1 import java.util.Scanner;
 2 
 3 public class Text12 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入用户名");
 7         String name = input.next();
 8         if (name.equals("uip")){
 9             System.out.println("请输入登陆密码");
10             String password=input.next();
11             if (password.equals("123456")){
12                 System.out.println("恭喜,登陆成功!");
13             }else {
14                 System.out.println("密码错误!");
15             }
16         }else {
17             System.out.println("非法用户!");
18         }
19     }
20 }

14、读入一个表示年份的整数,判断这一年是否是闰年。如何判断一个年份是否是闰年。(能被400整除或者被4整除不被100整除)

 1 import java.util.Scanner;
 2 
 3 public class Text13 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入一个年份");
 7         int year = input.nextInt();
 8         if ((year%400==0)||(year%4==0&&year%100!=0)){
 9             System.out.println("是一个闰年");
10         }else {
11             System.out.println("不是一个闰年");
12         }
13     }
14 }

2:循环结构

1、使用三种循环打印输出100以内的数之和

1-1 while循环

 1 public class Text10 {
 2     public static void main(String[] args) {
 3         int i=0;
 4         int sum=0;
 5         while (i<=100){
 6             sum=sum+i;
 7             i++;
 8         }
 9         System.out.println(sum);
10    }
11 }

1-2 do.....while 循环

 1 public class Text10 {
 2     public static void main(String[] args) {
 3  int i=0;
 4         int sum=0;
 5         do {
 6             sum=sum+i;
 7             i++;
 8         }while (i<=100);
 9         System.out.println(sum);
10   }
11 }

1-3 for循环

1 public class Text10 {
2     public static void main(String[] args) {
3      int sum=0;
4         for (int i = 0; i <=100 ; i++) {
5             sum=sum+i;
6         }
7         System.out.println(sum);
8   }
9 }

2、实现100-1000之间水仙花数(三位数,153=1^3+5^3+3^3)(153、370、371、407)

 1  int i=100;
 2         while (i<1000){
 3             int bWei=i/100;
 4             int sWei=i/10%10;
 5             int gWei=i%10;
 6             if (i==bWei*bWei*bWei+sWei*sWei*sWei+gWei*gWei*gWei){
 7                 System.out.println(i);
 8             }
 9             i++;
10         }

3、使用while、do-while以及for循环三种编程方式实现:计算100以内(包括100)的偶数,奇数之和

3-1 while

1  int i=0;
2         int sum=0;
3         while (i<=100){
4             if (i%2==0){
5                 sum=sum+i;
6             }
7             i++;
8         }
9         System.out.println(sum);

3-2 do-while

1  int i=0;
2         int sum=0;
3         do {
4            if (i%2==0){
5                sum=sum+i;
6            }
7            i++;
8         }while (i<=100);
9         System.out.println(sum);

3-3 for

1 int sum=0;
2         for (int i = 0; i <=100 ; i++) {
3             if (i%2==0){
4                 sum=sum+i;
5             }
6         }
7         System.out.println(sum);
8     }

4、打印100以内的所有奇数

1 public class Text13 {
2     public static void main(String[] args) {
3         for (int i = 0; i <100 ; i++) {
4             if (i%2!=0){
5                 System.out.println(i);
6             }
7         }
8     }
9 }

5、2012年培养学员25万人,每年增长25%。请问按此增长速度,到哪一年培训学员人数将达到100万人?

 1 public class Text14 {
 2     public static void main(String[] args) {
 3        int year=2012;
 4        double i=25;
 5         while (i < 100) {
 6             year++;
 7             i=i+i*0.25;
 8         }
 9         System.out.println(""+year+"年学员人数达到100万人");
10     }
11 }

6、读入一个表示年份的整数,判断这一年是否是闰年。如何判断一个年份是否是闰年。(能被400整除或者被4整除不被100整除)

1 public class Text15 {
2     public static void main(String[] args) {
3         for (int i = 1900; i <2021 ; i++) {
4             if (i%400==0||i%4==0 && i%100!=0){
5                 System.out.println(i);
6             }
7         }
8     }
9 }

7、本金10000元存入银行,年利率是千分之三,每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少

 1 public class Text26 {
 2     public static void main(String[] args) {
 3         int i=0;
 4         double num=10000;
 5         while (i<5){
 6             num=num+num*0.03;
 7             i++;
 8         }
 9         System.out.println("5年后获得的本金为"+num);
10     }
11 }

8、计算1000以内所有不能被7整除的整数之和

 1 public class Text16 {
 2     public static void main(String[] args) {
 3         int sum=0;
 4         for (int i = 0; i <1000 ; i++) {
 5             if (i%7!=0){
 6                 sum=sum+i;
 7             }
 8         }
 9         System.out.println(sum);
10     }
11 }

9、一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13m)

 1 public class Text27 {
 2     public static void main(String[] args) {
 3         double i=0.08;
 4         double sum=0;//对折高度
 5         int num=0;//对折次数
 6         while (sum<=8848130){
 7             sum=sum+i;
 8             i=i*2;
 9             num++;
10         }
11         System.out.println(num);
12     }
13 }

10、使用三种循环计算能被3整除并且能被5整除的数之和

10-1 while

 1 public class Text17 {
 2     public static void main(String[] args) {
 3         int i=0;
 4         int sum=0;
 5         while (i<100){
 6             if (i%3==0 && i%5==0){
 7                 sum=sum+i;
 8             }
 9             i++;
10         }
11         System.out.println(sum);
12     }
13 }

11、循环输出200到300之间所有能被5整除,或能被2整除并且能被3整除的数

1 public class Text18 {
2     public static void main(String[] args) {
3         for (int i = 200; i <300 ; i++) {
4             if (i%5==0||(i%2==0 && i%3==0)){
5                 System.out.println(i);
6             }
7         }
8     }
9 }

12、循环输入5个学生的成绩,计算这5个学生的总分,及平均分

 1 import java.util.Scanner;
 2 
 3 public class Text19 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         int i=1;
 7         int sum=0;
 8         do {
 9             System.out.println("输入你的第"+i+"成绩");
10             int score = input.nextInt();
11             i++;
12             sum=sum+score;
13         }while (i<=5);
14         System.out.println("成绩总和为"+sum);
15         int avg=sum/5;
16         System.out.println("平均成绩为"+avg);
17     }
18 }

13、输出加法表

 1 import java.util.Scanner;
 2 
 3 public class Text8 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入一个数");
 7         int num=input.nextInt();
 8         for (int i = 0; i <=num; i++) {
 9             System.out.println(i+"+"+(num-i)+"="+num);
10         }
11     }
12 }

14、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位

 1 public class Text20 {
 2     public static void main(String[] args) {
 3         for (int i = 100; i <=999 ; i++) {
 4             int b=i/100;
 5             int s=i/10%10;
 6             int g=i%10;
 7             if (i==b*b*b+s*s*s+g*g*g){
 8                 System.out.println(i);
 9             }
10         }
11     }
12 }

15、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同

 1 public class Text22 {
 2     public static void main(String[] args) {
 3         int i=10000;
 4         while (i<100000){
 5             int w=i/10000;
 6             int q=i/1000%10;
 7             int b=i/100%10;
 8             int s=i/10%10;
 9             int g=i%10;
10             if (g==w && s==q){
11                 System.out.println(i);
12             }
13             i++;
14         }
15     }
16 }

16、计算周一到周五的学习时间的平均值

 1 import java.util.Scanner;
 2 
 3 public class Text23 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         int i=1;
 7         int sum=0;
 8         int time=0;
 9         while (i<=5){
10             System.out.println("请输入周"+i+"的学习时间");
11             time = input.nextInt();
12             sum+=time;
13             i++;
14         }
15         System.out.println("学习总时长"+sum);
16         int avg=sum/5;
17         System.out.println("学习平均时长"+avg);
18     }
19 }

17、若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚。问笼中各有多少只鸡和兔?

 1  public static void main(String[] args) {
 2         for (int j = 0; j <=35 ; j++) {
 3             int t=35-j;
 4             if (j*2+t*4==94){
 5                 System.out.println("j"+j);
 6                 System.out.println("t"+t);
 7             }
 8         }
 9     }
10 }

18、从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 54321

 1 import java.util.Scanner;
 2 
 3 public class Text30 {
 4     public static void main(String[] args) {
 5         //从控制台输入一个正整数,计算该数的阶乘。例如输入5,阶乘为 5*4*3*2*1
 6         Scanner input=new Scanner(System.in);
 7         System.out.println("请输入一个正整数");
 8         int i = input.nextInt();
 9         int sum=i;
10         while (i>1){
11             i--;
12             sum=sum*i;
13             System.out.println(sum);
14         }
15     }
16 }

19、用循环做出九九乘法表

 1 public class Text31 {
 2     public static void main(String[] args) {
 3         for (int i = 1; i <=9 ; i++) {
 4             for (int j = 1; j <=i ; j++) {
 5                 System.out.print(i+"*"+j+"="+i*j+"  ");
 6             }
 7             System.out.println();
 8         }
 9     }
10 }

20、可以从控制台连续输入数字,当输入的数字为0时不可以再输入。

 1 import java.util.Scanner;
 2 
 3 public class Text32 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         int i;
 7         do {
 8             System.out.println("请输入一个数字");
 9              i = input.nextInt();
10             System.out.println(i);
11         }while (i!=0);
12 
13     }
14 }

21、计算 1+2-3+4-5+6-7....+100的结果

 1 public class Text33 {
 2     public static void main(String[] args) {
 3         int sum=0;
 4         for (int i = 2; i <=100 ; i++) {
 5             if (i%2==0){
 6                 sum=sum+i;
 7             }else {
 8                sum=sum-i;
 9             }
10         }
11         System.out.println(1+sum);
12     }
13 }

22、计算十位顾客年龄比例(计算30岁以上,和30岁以下的比率)

 1 import java.util.Scanner;
 2 
 3 public class Demo5 {
 4     public static void main(String[] args) {
 5         //统计30岁以上的人数
 6         Scanner input=new Scanner(System.in);
 7         int age=30;
 8         double sum=0;
 9         for (int i = 1; i <=10 ; i++) {
10             System.out.println("请输入第"+i+"位客人年龄");
11             age = input.nextInt();
12             if (age>30){
13                 sum++;
14             }
15         }
16         System.out.println("30岁以上人数为"+sum);
17         System.out.println("30岁以上人员比率为"+(sum/10*100)+"%");
18     }
19 }

23、循环输入学生成绩,并统计大于等于80分的学生比例(for实现,输入循环的次数)

 1 import java.util.Scanner;
 2 
 3 public class Text35 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         int score=80;
 7         double num=0;
 8         for (int i = 1; i <=10 ; i++) {
 9             System.out.println("请输入第"+i+"个学生成绩");
10             score = input.nextInt();
11             if (score>=80){
12                 num++;
13             }
14         }
15         System.out.println("大于80分的学生人数为"+num);
16         System.out.println("大于80分学生比例为"+(num/10*100)+"%");
17     }
18 }

24、打印

 1 public class Text36 {
 2     public static void main(String[] args) {
 3         //打印
 4         //    *
 5         //    **
 6         //    ***
 7         //    ****
 8         //    *****
 9         for (int i = 1; i <=5 ; i++) {
10             for (int j = 1; j <=i ; j++) {
11                 System.out.print("*");
12             }
13             System.out.println();
14         }
15     }
16 }

25、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

 1 import java.util.Scanner;
 2 
 3 public class Text28 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入字符");
 7         String str = input.nextLine();
 8         System.out.println(str);
 9         int zm=0;
10         int kg=0;
11         int sz=0;
12         int qt=0;
13         for (int i = 0; i <str.length() ; i++) {
14             char c = str.charAt(i);
15             if (c>'a'&& c<'z'||c>'A'&&c<'Z'){
16                 zm++;
17             }else if (c==' '){
18                 kg++;
19             }else if (c>'0'&&c<'9'){
20                 sz++;
21             }else {
22                 qt++;
23             }
24         }
25         System.out.println("字母的数量"+zm);
26         System.out.println("空格的数量"+kg);
27         System.out.println("数字的数量"+sz);
28         System.out.println("其他的数量"+qt);
29     }
30 }

26、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

 1 public class Text21 {
 2     public static void main(String[] args) {
 3         double high=100;
 4         double distance=100;
 5         int i=1;
 6         while (i<=10){
 7             high=high/2;
 8             distance=distance+high*2;
 9             i++;
10         }
11         System.out.println(distance);
12         System.out.println(high);
13     }
14 }

27、喝饮料游戏,满三瓶换一瓶,总共喝了多少瓶,基数50瓶

 1 public class Demo2 {
 2     public static void main(String[] args) {
 3         int num=50;
 4         for (int i = 1; i <=num; i++) {
 5             if (i%3==0){
 6                 num++;
 7             }
 8         }
 9         System.out.println(num);
10     }
11 }

3:多重循环

1、用*拼一个菱形

 1 public class Text23 {
 2     public static void main(String[] args) {
 3         //制作菱形
 4         //上半部分
 5         for (int i = 1; i <=4 ; i++) {
 6             for (int j = 0; j <4-i ; j++) {
 7                 System.out.print(" ");
 8             }
 9             for (int a = 0; a <2*i-1 ; a++) {
10                 System.out.print("*");
11             }
12             System.out.println();
13         }
14         //下半部分
15         for (int i = 1; i <4 ; i++) {
16             for (int j = 0; j <i ; j++) {
17                 System.out.print(" ");
18             }
19             for (int b = 0; b <7-2*i; b++) {
20                 System.out.print("*");
21             }
22             System.out.println();
23         }
24     }
25 }

2、九九乘法表

 1 public class Demo11 {
 2     public static void main(String[] args) {
 3         //九九乘法表
 4         for (int i = 1; i <=9 ; i++) {
 5       for (int j = 1; j <=i; j++) {
 6  System.out.print(i+"*"+j+"="+i*j+"  ");
 7             }
 8             System.out.println();
 9         }
10     }
11 }

3、制作5*5

 1 public class Demo7 {
 2     public static void main(String[] args) {
 3         //5*5
 4         for (int i = 1; i <=5 ; i++) {
 5         for (int j = 1; j <=5 ; j++) {
 6                 System.out.print("*");
 7             }
 8             System.out.println();
 9         }
10     }
11 }

4、用*打印直角三角形

 1 public class Demo8 {
 2     public static void main(String[] args) {
 3         for (int i = 1; i <=5 ; i++) {
 4         for (int j = 1; j <=i ; j++) {
 5                 System.out.print("*");
 6             }
 7             System.out.println();
 8         }
 9     }
10 }

5、制作平行四边形

 1 public class Demo9 {
 2     public static void main(String[] args) {
 3         for (int i = 1; i <=5 ; i++) {
 4        for (int j = 5-i; j >0 ; j--) {
 5                 System.out.print(" ");
 6             }
 7         for (int a =1; a <=5 ; a++) {
 8                 System.out.print("*");
 9             }
10             System.out.println();
11         }
12     }
13 }

6、制作三角形

 1 public class Demo10 {
 2     public static void main(String[] args) {
 3         for (int i = 1; i <=5 ; i++) {
 4         for (int a =0; a <5-i ; a++) {
 5                 System.out.print(" ");
 6             }
 7      for (int j = 0; j <2*i-1 ; j++) {
 8                 System.out.print("*");
 9             }
10             System.out.println();
11         }
12     }
13 }

7、1900-2021 闰年 每行两个

 1 public class Text {
 2     public static void main(String[] args) {
 3         int count=0;//个数
 4   for (int i = 1900; i <=2021 ; i++) {
 5 if (i%400==0 || (i%4==0 && i%100!=0)){
 6    System.out.print(i+"  ");//一整行输出
 7                 count++;
 8                 if (count%2==0){
 9 System.out.println(" ");
10                 }
11             }
12         }
13     }
14 }

8、循环录入某学生5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示录入错误

 1 import java.util.Scanner;
 2 
 3 public class Text1 {
 4     public static void main(String[] args) {
 5         //方法一:
 6 Scanner input=new Scanner(System.in);
 7         int sum=0;
 8         int i;
 9         //获得成绩
10         for ( i = 1; i <=5 ; i++) {
11 System.out.println("请输入第"+i+"门课程成绩");
12             int score=input.nextInt();
13             if (score<0){
14        System.out.println("录入错误");
15                 break;
16             }
17             sum+=score;
18         }
19         if (i==6){
20    System.out.println("课程总分为"+sum);
21             double avg=sum/5;
22   System.out.println("课程平均分为"+avg);
23         }
24         //方法二:
25 //Scanner input=new Scanner(System.in);
26 //            int sum=0;
27 //            boolean pd=false;//判断
28 //       for (int i = 1; i <=5 ; i++) {
29 //            System.out.println("请输入第"+i+"门课程成绩");
30 // int score=input.nextInt();
31 //            if (score<0){
32 //                pd=true;
33 //      System.out.println("录入错误");
34 //                break;
35 //            }
36 //            sum+=score;
37 //        }
38 //        if (pd==false) {
39 //System.out.println("课程总分为" + sum);
40 //            double avg = sum / 5;
41 // System.out.println("课程平均分为" + avg);
42 //        }
43     }
44 }

9、循环录入Java课的学生成绩,统计分数大于等于80分的学生比例

 1 import java.util.Scanner;
 2 
 3 public class Text2 {
 4     public static void main(String[] args) {
 5         Scanner input=new Scanner(System.in);
 6         System.out.println("请输入学生人数");
 7         int num=input.nextInt();
 8         int count=0;//大于80分学生人数
 9      for (int i = 1; i <=num ; i++) {
10             System.out.println("请输入第"+i+"个学生成绩");
11             int score=input.nextInt();
12             if (score<80){
13                 continue;
14             }
15             count++;
16         }
17 System.out.println("成绩大于80分人数为"+count);
18         System.out.println("大于80分的学生比例为"+(count*1.0/num*100)+"%");
19     }
20 }

10、1~10之间的整数相加,得到累加值大于20的当前数,使用循环进行累加,从1到10,判断累加值是否大于20,大于20则跳出循环并打印当前值

 1 public class Text3 {
 2     public static void main(String[] args) {
 3         int sum=0;
 4        for (int i = 1; i <=10 ; i++) {
 5             sum+=i;
 6             if (sum>20){
 7                 System.out.println(i);
 8   System.out.println(sum);
 9                 break;
10             }
11         }
12     }
13 }

11、求1-10之间的偶数和,判断当前是否为偶数,如果为奇数跳过,执行下一循环,如果为偶数,进行累加

 1 public class Text4 {
 2     public static void main(String[] args) {
 3         int sum=0;
 4     for (int i = 1; i <=10 ; i++) {
 5             if (i%2==0){
 6                 sum=sum+i;
 7                 continue;
 8             }
 9         }
10         System.out.println(sum);
11     }
12 }

12、使用循环输出 100、95、90、85.......5;可尝试使用for、while、do-while三种循环实现

 1 public class Text5 {
 2     public static void main(String[] args) {
 3        //while
 4         int i=100;
 5         while (i>0){
 6             System.out.println(i);
 7             i=i-5;
 8         }
 9 //        //do-while
10         int a=100;
11         do {
12             System.out.println(a);
13             a-=5;
14         }while (a>0);
15 //        //for
16     for (int j = 100; j >=5 ;j-=5 ) {
17             System.out.println(j);
18         }
19     }
20 }

13、从键盘输入一位整数,当输入1~7时,输出“星期一”~“星期日”; 输入其他数字时,提示用户重新输入

 1 import java.util.Scanner;
 2 
 3 public class Text6 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         for (int i = 1; i <=7 ; i++) {
 7   System.out.println("请输入一位整数");
 8             i=input.nextInt();
 9             switch (i){
10                 case 1:
11  System.out.println("星期一");
12                     break;
13                 case 2:
14  System.out.println("星期二");
15                     break;
16                 case 3:
17 System.out.println("星期三");
18                     break;
19                 case 4:
20 System.out.println("星期四");
21                     break;
22                 case 5:
23  System.out.println("星期五");
24                     break;
25                 case 6:
26  System.out.println("星期六");
27                     break;
28                 case 7:
29   System.out.println("星期日");
30                     break;
31                 default:
32 System.out.println("请重新输入");
33                     break;
34             }
35         }
36     }
37 }

14、使用双重循环根据用户输入的数字,输出如下图形

 1 import java.util.Scanner;
 2 
 3 public class Text7 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6     System.out.println("请输入一个数字");
 7         int num=input.nextInt();
 8       for ( int i =1; i <=num ; i++) {
 9      for (int j = 0; j<num-i ; j++) {
10                 System.out.print(" ");
11             }
12      for (int a = 0; a <2*i-1; a++) {
13                 System.out.print(i);
14             }
15             System.out.println();
16         }
17     }
18 }

4:数组

1、数组基本使用形式

 1 public class Text8 {
 2     public static void main(String[] args) {
 3         //数据类型[]  数组名=new 数据类型[大小]
 4         //声明数组
 5         int[] scores;
 6         //分配空间
 7         scores=new int[5];
 8         //给数组进行赋值
 9         scores[0]=90;
10         scores[1]=88;
11         scores[4]=77;
12         //使用数组
13         System.out.println(scores[2]);
14         System.out.println(scores[4]);
15         //声明并开辟空间
16 double[] height=new double[5];//0.0
17 String[] strs=new String[2];//null
18  char[] chars=new char[2];//空格( )
19 boolean[] booleans=new boolean[2];//false
20     }
21 }

2、录入学生的5门成绩,使用数组

 1 import java.util.Scanner;
 2 
 3 public class Text9 {
 4     public static void main(String[] args) {
 5         //方法一:
 6         int[] score={23,44,69,78,55};
 7         //方法二:
 8 Scanner input=new Scanner(System.in);
 9         int[] scores=new int[5];
10         for (int i = 0; i <scores.length ; i++) {
11             System.out.println("请输入第"+(i+1)+"个学生成绩");
12             scores[i]=input.nextInt();
13         }
14 for (int i = 0; i <scores.length ; i++) {
15 System.out.print(scores[i]+"  ");
16         }
17     }
18 }

3、输入5个学生成绩 求avg

 1 public class Text10 {
 2     public static void main(String[] args) {
 3         int[] score={12,2,45,3,85};
 4         int sum=0;
 5 //        for (int i = 0; i <score.length ; i++) {
 6 //                sum+=score[i];
 7 //        }
 8         //增强for
 9         for (int a:score) {
10             sum+=a;
11         }
12         double avg=sum/score.length;
13 System.out.println("平均分为"+avg);
14     }
15 }

4、有一个数列:8,4,2,1,23,344,12循环输出数列的值,求数列中所有数值的和

 1 import java.util.Scanner;
 2 
 3 public class Text11 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] num=new int[7];
 7         int sum=0;
 8         boolean pd=false;
 9 for (int i = 0; i <num.length ; i++) {
10 System.out.println("请输入第"+(i+1)+"个数");
11             num[i]=input.nextInt();
12             sum=sum+num[i];
13         }
14 System.out.println("所有数值的和为"+sum);
15     }
16 }

5、有一个数列:8,4,2,1,23,344,12循环输出数列的值,从键盘中任意输入一个数据,判断数列中是否包含此数

 1 import java.util.Scanner;
 2 
 3 public class Text12 {
 4     public static void main(String[] args) {
 5         int[] num={8,4,2,1,23,344,12};
 6 Scanner input=new Scanner(System.in);
 7 System.out.println("请输入一个数");
 8         int a=input.nextInt();
 9         boolean pd=false;
10         for (int nums:num) {
11             if (a==nums){
12                 pd=true;
13                 break;
14             }
15         }
16         if (pd==true){
17       System.out.println("包含此数");
18         }else {
19        System.out.println("不包含此数");
20         }
21     }
22 }

6、从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分

 1 import java.util.Scanner;
 2 
 3 public class Text13 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] score=new int[5];
 7       for (int i = 0; i <score.length ; i++) {
 8             System.out.println("请输入第"+(i+1)+"个学生成绩");
 9             score[i]=input.nextInt();
10         }
11         //获得最大值、最小值
12         int max=score[0];
13         int min=score[0];
14         for (int a:score) {
15             if (a>max){
16                 max=a;
17             }
18             if (a<min){
19                 min=a;
20             }
21         }
22 System.out.println("最大值为"+max);
23 System.out.println("最小值为"+min);
24     }
25 }

7*、一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序

 1 public class Text14 {
 2     public static void main(String[] args) {
 3 int[] score={99,85,82,63,60,-1};
 4         int num=88;
 5         //找到要插入的位置
 6         int index=-1;
 7 for (int i = 0; i <score.length ; i++) {
 8             if (num>score[i]){
 9                 index=i;
10                 break;
11             }
12         }
13 System.out.println("新插入的值的下标"+index);
14         //移位
15 for (int i =score.length-1; i >index ; i--) {
16             score[i]=score[i-1];
17         }
18         //添加新值
19         score[index]=num;
20         for (int a:score) {
21             System.out.print(a+" ");
22         }
23     }
24 }

8、求出4家店的最低手机价格

 1 import java.util.Scanner;
 2 
 3 public class Text15 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] price=new int[4];
 7         for (int i = 0; i <4 ; i++) {
 8             System.out.println("请输入"+(i+1)+"家店的价格");
 9             price[i]=input.nextInt();
10         }
11         //获得最小值
12         int min=price[0];
13         for (int a:price) {
14             if (a<min){
15                 min=a;
16             }
17         }
18 System.out.println("最低价为第"+min);
19     }
20 }

9、数组存储5笔购物金额,在控制台输出并计算总金额

 1 import java.util.Scanner;
 2 
 3 public class Text16 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] price=new int[5];
 7         int sum=0;
 8         for (int i = 0; i <5 ; i++) {
 9             System.out.print("请输入"+(i+1)+"笔购物金额");
10             price[i]=input.nextInt();
11             sum+=price[i];
12         }
13 for (int i = 0; i <price.length ; i++) {
14 System.out.println(price[i]);
15         }
16 System.out.println("总金额为"+sum);
17     }
18 }

10、输出100到1000的水仙花数

 1 import java.util.Scanner;
 2 
 3 public class Text17 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] num=new int[900];
 7    for (int i =100; i <1000 ; i++) {
 8    num[i-100]=i;//num[i]的第一个i值为0;
 9         }
10         for (int a:num) {
11             int b=a/100;
12             int s=a/10%10;
13             int g=a%10;
14             if (a==b*b*b+s*s*s+g*g*g){
15                 System.out.println(a);
16             }
17         }
18     }
19 }

11、定义数组,存放5个学生的成绩【成绩值自己设定】获得成绩之和,平均成绩,最小成绩,最大成绩。

 1 import java.util.Scanner;
 2 
 3 public class Text19 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] score=new int[5];
 7         int sum=0;
 8         for (int i = 0; i <5 ; i++) {
 9             System.out.println("请输入第"+(i+1)+"个人的成绩");
10             score[i]=input.nextInt();
11             sum=sum+score[i];
12         }
13 System.out.println("总成绩为"+sum);
14         double avg=sum/5;
15 System.out.println("平均成绩为"+avg);
16         //获得最小成绩、最大成绩
17         int max=score[0];
18         int min=score[0];
19         for (int a:score) {
20             if (a>max){
21                 max=a;
22             }
23             if (a<min){
24                 min=a;
25             }
26         }
27 System.out.println("最小成绩为"+min);
28 System.out.println("最大成绩为"+max);
29     }
30 }

12、定义一个长度为10的int数组,统计数组中的最大值、最小值、以及奇数和偶数的个数

 1 import java.util.Scanner;
 2 
 3 public class Text20 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] num= new int[10];
 7         int count=0;
 8         for (int i = 0; i <10 ; i++) {
 9             System.out.println("请输入第"+(i+1)+"个数");
10             num[i]=input.nextInt();
11         }
12         int max=num[0];
13         int min=num[0];
14         for (int a:num) {
15             if (a>max){
16                 max=a;
17             }
18             if (a<min){
19                 min=a;
20             }
21             if (a%2==0){
22                 count++;
23             }
24         }
25 System.out.println("最大值为"+max);
26  System.out.println("最小值为"+min);
27 System.out.println("偶数个数为"+count);
28 System.out.println("奇数个数为"+(10-count));
29     }
30 }

13、B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分?

 1 import java.util.Scanner;
 2 
 3 public class Text21 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] num= new int[10];
 7         int sum=0;
 8         for (int i = 0; i <10 ; i++) {
 9             System.out.println("请输入第"+(i+1)+"个分数");
10             num[i]=input.nextInt();
11             sum+=num[i];
12         }
13         //获得最大值、最小值
14         int max=num[0];
15         int min=num[0];
16         for (int a:num) {
17             if (a>max){
18                 max=a;
19             }
20             if (a<min){
21                 min=a;
22             }
23         }
24         double avg=(sum-max-min)/10;
25 System.out.println("平均分为"+avg);
26     }
27 }

14、给定两个同类型的数组,将其合并成一个数组

 1 public class Text18 {
 2     public static void main(String[] args) {
 3         //给定两个同类型的数组,将其合并成一个数组
 4         int[] num={1,2,6,7};
 5         int[] num1={2,7,9,20,9};
 6         int[] a=new int[num.length+num1.length];
 7 for (int i = 0; i <a.length; i++) {
 8                if (i<num.length) {
 9                    a[i] = num[i];
10                }else {
11        a[i]=num1[i-num.length];
12                }
13 System.out.print(a[i]+"\t");
14         }
15     }
16 }

15、将指定数组中的数组元素进行反转 例如:{10,23,2,45,6}—>{6,45,2,23,10}

 1 public class Test26 {
 2     public static void main(String[] args) {
 3         //将指定数组中的数组元素进行反转
 4         //例如:{10,23,2,45,6}—>{6,45,2,23,10}
 5         int[] a={10,23,2,45,6};
 6   for (int i = 0; i <a.length ; i++) {
 7   System.out.print(a[i]+"\t");
 8         }
 9 for (int i = 0; i <a.length/2 ; i++) {
10             int temp=a[i];
11             a[i]=a[a.length-1-i];
12             a[a.length-1-i]=temp;
13         }
14 for (int i = 0; i <a.length ; i++) {
15 System.out.print(a[i]+"\t");
16         }
17     }
18 }

16、现在定义如下的一个数组:intoldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5},要求将以上数组中值为0的去掉,将不为0的值存入一个新的数组,生成的新数组为:intnewArr[]={1,3,4,5,6,6,5,4,7,6,7,5}

 1 public class Text25 {
 2     public static void main(String[] args) {
 3 // 现在定义如下的一个数组:
 4 // intoldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5},
 5 // 要求将以上数组中值为0的去掉,将不为0的值存入一个新的数组,
 6 // 生成的新数组为:intnewArr[]={1,3,4,5,6,6,5,4,7,6,7,5}
 7         int[] a={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
 8 for (int i = 0; i <a.length ; i++) {
 9             if (a[i]==0){
10                 continue;
11             }
12        System.out.print(a[i]+" ");
13         }
14     }
15 }

17、给定一个整型数组,数组成员10个,求该数组中第二大的数的下标

 1 public class Test27 {
 2     public static void main(String[] args) {
 3         //给定一个整型数组,数组成员10个,求该数组中第二大的数的下标
 4         int[] num={12,45,23,77,43,21,9,22,34,8,-1};
 5         int index=-1;
 6         //找到最大值及下标
 7         int max=num[0];
 8 for (int i = 0; i <num.length ; i++) {
 9             if (num[i]>max){
10                 max=num[i];
11                 index=i;
12             }
13         }
14 System.out.println("最大值为"+max);
15 System.out.println("最大值下标为"+index);
16 //将数组最大值赋值给最后一位,并将最大值赋值为0
17         num[10]=num[index];
18             num[index]=0;
19         int max1=num[0];
20 for (int i = 0; i <num.length-1 ; i++) {
21            if (num[i]>max1){
22                max1=num[i];
23                index=i;
24            }
25         }
26 System.out.println("最大值为"+max1);
27 System.out.println("最大值下标为"+index);
28     }
29 }

18、冒泡排序

 1 public class Test1 {
 2     public static void main(String[] args) {
 3 int[] nums={45,2,7,1,9};
 4 for (int i = 0; i <nums.length-1 ; i++) {
 5             for (int j = 0; j <nums.length-1-i ; j++) {
 6                 //两两比较小靠前
 7                 if(nums[j]<nums[j+1]){
 8                     int temp=nums[j];
 9                     nums[j]=nums[j+1];
10                     nums[j+1]=temp;
11                 }
12             }
13         }
14 
15         for (int a:nums) {
16             System.out.print(a+"\t");
17         }
18     }
19 }

19、使用Arrarys排序

 1 public class Test2 {
 2     public static void main(String[] args) {
 3         int[] scores={5,8,2,1,9};
 4         //排序
 5         Arrays.sort(scores);
 6         for (int a:scores) {
 7             System.out.print(a+" ");
 8         }
 9         //查找
10 int i = Arrays.binarySearch(scores, 8);
11         System.out.println(i);
12     }
13 }

20、二分法

 1 public class Test3 {
 2 public static void main(String[] args) {
 3         int[] scores={56,2,89,4,7,1};
 4         Arrays.sort(scores);                             //1,2,4,7,56,89
 5         int key=4;//查找的数
 6         int low=0;//最低下标
 7 int high=scores.length-1;//最大下标
 8         while (low<=high){
 9 int mid=(low+high)>>>1;//找到中间下标
10 int midValue=scores[mid];//获得中间下标值
11 if(midValue<key){//当前值和要查找的值比较
12                 low=mid+1;
13             }else if(midValue>key){
14                 high=mid-1;
15             }else{
16           System.out.println(mid);
17                 break;
18            }
19         }
20     }
21 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM