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