java基礎練習題

来源:https://www.cnblogs.com/hxun/archive/2019/09/09/11493940.html
-Advertisement-
Play Games

1變數、運算符和類型轉換:1.1手動輸入一個學生的成績,對這個成績進行一次加分,加當前成績的20%,輸出加分後成績 Scanner scan = new Scanner(System.in); System.out.println("請輸入一個數字"); int num = scan.nextInt ...


1變數、運算符和類型轉換:
1.1手動輸入一個學生的成績,對這個成績進行一次加分,加當前成績的20%,輸出加分後成績

        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入一個數字");
        int num = scan.nextInt();
        num += num * 0.2;
        System.out.println(num);
View Code

1.2商場舉行店慶,抽幾折打幾折,
先手動輸入消費金額,再輸入,抽到的折扣,計算出折後價格

        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入消費金額");
        int num = scan.nextInt();
        System.out.println("請輸入抽到的折扣");
        int dis = scan.nextInt();
        int price = 0;// 累加變數
        price = num * dis / 10;
        System.out.println("折後價格:" + price);
View Code

1.3手動輸入一個4位數,求各位數字之和

        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入一個4位數");
        int shu = scan.nextInt();
        int a = shu / 1 % 10;
        int b = shu / 10 % 10;
        int c = shu / 100 % 10;
        int d = shu / 1000 % 10;
        System.out.println(a + b + c + d);
View Code

2分支結構:
2.1商場消費返利活動,手動輸入顧客消費金額,
如果金額打8折後仍然滿1000元,用戶就獲得200元代金券一張(不考慮多張)

        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入消費金額");
        int num = scan.nextInt();

        double dis = num * 0.8;// 打折後的價格
        if (dis > 1000) {
            dis = dis - 200;// 200元代金券
        }
        System.out.println(dis);
View Code

 

2.2用戶輸入一個年份,如果是閏年輸出是閏年
(年份能被4整除,且不能被100整除,或者能被400整除的年份)

        Scanner input = new Scanner(System.in);
        System.out.println("輸入年份");
        int year = input.nextInt();
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
            System.out.println("是閏年");
        } else {
            System.out.println("不是閏年");
        }
View Code

 

2.3手動輸入一個整型會員號,
如果用戶輸入的是4位數字,
輸出登錄成功,
如果用戶輸入的不是4位數字,
輸出“您輸入的會員號有誤”

        Scanner input = new Scanner(System.in);
        System.out.println("請輸入整型會員號");
        int num = input.nextInt();
        int i = 0;// 初始化 數字的位數
        while (num != 0) {
            num = num / 10;// 被10整除 i++;
        } // 最後,這個 i 就是數字的位數
        if (i != 4) {
            System.out.println("您輸入的會員號有誤");
        } else {
            System.out.println("登錄成功!");
        }
View Code

 

2.4手動輸入a,b,c三個變數的數值,
要求通過數值交換,
把輸入的數值從小到大
排序放入a,b,c中,並輸出

        Scanner scanner = new Scanner(System.in);
        System.out.print("請輸入第一個整數:");
        int a = scanner.nextInt();
        System.out.print("請輸入第二個整數:");
        int b = scanner.nextInt();
        System.out.print("請輸入第三個整數:");
        int c = scanner.nextInt();

        int x = 0;
        if (a > b) {
            x = a;
            a = b;
            b = x;
        }
        if (a > c) {
            x = a;
            a = c;
            c = x;
        }
        if (b > c) {
            x = b;
            b = c;
            c = x;
        }
        System.out.println(a + "," + b + "," + c);
View Code

 

3多分支結構
3.1商場根據會員積分打折,
2000分以內打9折,
4000分以內打8折
8000分以內打7.5折,
8000分以上打7折,
使用if-else-if結構,實現手動輸入購物金額和積分,計算出應繳金額

        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入購物金額");
        double shop = sc.nextDouble();
        System.out.println("請輸入積分");
        int fen = sc.nextInt();
        if (fen < 2000) {
            shop *= 0.9;
            System.out.println("目前消費" + shop + "元");
        } else if (fen >= 2000 && fen <= 4000) {
            shop *= 0.8;
            System.out.println("目前消費" + shop + "元");
        } else if (fen <= 8000 && fen > 4000) {
            shop *= 0.75;
            System.out.println("目前消費" + shop + "元");
        } else if (fen > 8000) {
            shop *= 0.7;
            System.out.println("目前消費" + shop + "元");
        } else {
            System.out.println("抱歉沒有折扣");
        }
View Code

 

3.2機票價格按照淡季旺季、頭等艙和經濟艙收費、
輸入機票原價、月份和頭等艙或經濟艙,
其中旺季(5-10月)頭等艙9折,經濟艙85折,
淡季(11月到來年4月)頭等艙7折,經濟艙65折,
最終輸出機票價格

        Scanner s = new Scanner(System.in);
        System.out.println("請輸入機票原價");
        int piao = s.nextInt();
        System.out.println("請輸入月份");
        int yue = s.nextInt();
        System.out.println("請選擇:1.頭等" + "2.經濟");
        int l = s.nextInt();
        if (yue >= 5 && yue <= 10) {// 旺季
            if (l == 1) {
                piao *= 0.9;
            } else {
                piao *= 0.85;
            }

        } else {// 淡季
            if (l == 1) {
                piao *= 0.7;
            } else {
                piao *= 0.65;
            }

        }
        System.out.println(piao);
View Code

 

3.3選擇一個形狀(1長方形、2正方形、3三角形、4圓形)
根據不同的選擇讓用戶輸入不同的信息,
長方形有長和寬、
正方形有邊長、
三角形有底和高、
圓形有半徑,
計算輸出指定形狀的面積

        Scanner scan=new Scanner(System.in);
        System.out.println("1長方形、2正方形、3三角形、4圓形");
        int num=scan.nextInt();
        switch(num) {
        case 1:
            System.out.println("請輸入長方形的長");
            int l=scan.nextInt();
            System.out.println("請輸入長方形的寬");
            int w=scan.nextInt();
            int fs=l*w;
            System.out.println("長方形面積為:"+fs);
            break;
        case 2:
            System.out.println("請輸入正方形邊長");
            int z=scan.nextInt();
            System.out.println("正方形面積為:"+z*z);
            break;
        case 3:
            System.out.println("請輸入三角形的底長");
            int d=scan.nextInt();
            System.out.println("請輸入三角形的高");
            int g=scan.nextInt();
            System.out.println("三角形面積為:"+d*g/2);
            break;
        case 4:
            System.out.println("請輸入圓形的半徑");
            double r=scan.nextDouble();
            double ys=3.14*r*r;
            System.out.println("圓形面積為:"+ys);
            break;
        }
View Code

 

3.4輸入年份和月份,輸出這個月應該有多少天(使用switch結構)

        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入年份");
        int year = scan.nextInt();
        System.out.println("請輸入月份");
        int month = scan.nextInt();
        switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            System.out.println("31天");
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            System.out.println("30天");
            break;
        case 2:
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                System.out.println("29天");
            } else {
                System.out.println("28天");
            }
        }

 

4迴圈結構(上)
4.1隨機生成一個1-100之間的數字num,迴圈讓用戶輸入猜這個數,
如果用戶輸入的數字大於num提示輸入的數字比較大,
如果用戶輸入的數字小於num提示輸入的數字比較小,
直到用戶輸入的數字和num相等為止,然後輸出用戶猜數的總次數

        Scanner scan=new Scanner(System.in);
        Random ran=new Random();
        //生成游戲答案1~100
        int num=ran.nextInt(100)+1;
        //System.out.println(num);
        int n=0;//定義n的初值
        int i=0;//定義猜數次數
        while(n!=num) {
            System.out.println("請猜數字");
            n=scan.nextInt();
            if(n>num) {//判斷猜數結果
                System.out.println("輸入的數字較大");
            }else if(n<num) {
                System.out.println("輸入的數字較小");
            }else {
                System.out.println("恭喜您猜對了");
            }
            i++;//猜數次數加1
        }
        System.out.println("總共猜了"+i+"次");

 

4.2列印出1-100之間所有不是7的倍數和不包含7的數字,並求和

        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if(i%7 ==0 || i%10 == 7 || i/10 == 7){//註意:70-79容易漏掉
                continue;
            }
            sum += i;
        }
        System.out.println(sum);

 

4.3迴圈輸入5個數,輸完後顯示這些數中有沒有負數

        Scanner scan=new Scanner(System.in);
        System.out.println("請輸入5個數字");
        int flag=0;//立旗
        int i=1;
        while(i<=5) {
            int num=scan.nextInt();
            if(num<0) {
                flag=1;
            }
            i++;
        }
        if(flag==0) {
            System.out.println("沒有負數");
        }else {
            System.out.println("有負數");
        }

 

5迴圈結構(下)
5.1有一個有錢的神經病,他往銀行里存錢,
第一天存1元,以後每天比前一天多存50%,完成下列計算任務
1)他存到第幾天,當天存的錢會超過10元

        double money=1;
        int day=1;
        while(money<10) {
            money*=1.5;
            day++;
            System.out.println("day:"+day+",money:"+money);
        }
        System.out.println(day);


2)一個月(30天)後,他總共存了多少錢

double sum=0;
        double mo=1;
        for(int i=1;i<=30;i++) {
            sum+=mo;
            System.out.println("i:"+i+",money:"+mo+",sum:"+sum);
            mo*=1.5;
        }
        System.out.println(sum);

 

 

 

5.2有一個400米一圈的操場,一個人要跑10000米,
第一圈50秒,其後每一圈都比前一圈慢1秒,
按照這個規則計算跑完10000米需要多少秒

        int round=10000/400;
        int sum=0;
        int time=50;
        for(int i=1;i<=round;i++) {
            sum+=time;
            System.out.println("圈數:"+i+",時間:"+time+",花的時間:"+sum);
            time++;
        }
        System.out.println(sum);

 

5.3用戶輸入任意一個整數,求各位數字之和

        Scanner scan=new Scanner(System.in);
        System.out.println("請輸入一個數字");
        int num=scan.nextInt();
        int sum=0;//累加變數
        while(num>0) {
            //將數字的個位取出累加
            sum+=num%10;
            //將當前數字除以10,以便下次迴圈使用
            num=num/10;//num/=10;
        }
        System.out.println(sum);

 

5.4井裡有一隻蝸牛,他白天往上爬5米,晚上掉3.5米,井深56.7米
計算蝸牛需要多少天才能從井底到爬出來

        int day=1;//天數
        double sum=0;//爬過的距離
        while(true) {
            //白天向上爬5米
            sum+=5;
            System.out.println("day:"+day+",sum:"+sum);
            if(sum>=56.7) {//如果爬出了井
                //退出迴圈
                break;
            }
            //晚上掉3.5;
            sum-=3.5;
            day++;
        }
        System.out.println(day);

 

6迴圈嵌套
6.1求1~1000以內質數列表
PS:質數是只能被1和自身整除的整數

        int i, j;
        for (i = 1; i <= 1000; i++) {
            for (j = 2; j < i; j++) {
                if (i % j == 0)
                    break;
            }

            if (i == j){
                System.out.print(j + " ");
            }

        }

 

7數組
7.1定義一個數組int[] nums={8,7,3,9,5,4,1}
輸出數組中的最大值和最大值所在的下標

        int[] nums={8,7,3,9,5,4,1};
        int max = nums[0];//預設第一個最大
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] > max) {
                max = nums[i];
                index = i;
            }
        }
        System.out.println("最大的數: "+max+" 下標: "+index);

 

7.2向一個長度為10的整型數組中隨機生成10個0~9的隨機整數,完成下列任務
1)升序輸出、降序輸出
2)輸出總和、平均數

        Random ran = new Random();
        int[] num = new int[10];
        for (int i = 0; i < num.length; i++) {
            num[i] = ran.nextInt(10);
        }
        Arrays.sort(num);
        for (int i = 0; i < num.length; i++) {
            System.out.print(num[i] + " ");
        }
        System.out.println("------升序------");
        for (int i = num.length - 1; i >= 0; i--) {
            System.out.print(num[i] + " ");
        }
        System.out.println("------降序------");

        // 總和
        int sum = 0;
        for (int i = 0; i < num.length; i++) {
            sum = num[i] + sum;
        }
        System.out.println("總和:" + sum);

        // 平均數
        int sum2 = 0;
        for (int i = 0; i < num.length; i++) {
            sum2 = num[i] + sum2;
        }
        System.out.println("平均數:" + sum2 / num.length);

 

7.3向一個長度為5的整型數組中隨機生成5個1-10的隨機整數
要求生成的數字中沒有重覆數

        int[] nums = new int[5];
        Random ran = new Random();
        
        for (int i = 0; i < nums.length; i++) {
            nums[i] = ran.nextInt(10) + 1;
            
            for (int j = 0; j < i; j++) {
                while (nums[i] == nums[j]) {//如果重覆,退回去重新生成隨機數
                    i--;
                }
            }
        }
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i] + " ");
        }

 

7.4(選做)向一個長度為10的整型數組中隨機生成10個0~9的隨機整數,完成下列任務
1)統計每個數字出現了多少次
2)輸出出現次數最多的數字
3)輸出只出現一次的數字中最小的數字

        Random r = new Random();
        // 1. 聲明源數組,包含10個0-9之間的隨機數
        int[] src = new int[10];
        // 2. 聲明一個標記數組,存放的是0-9,10個數字
        int[] flag = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        // 3. 聲明一個用來統計標記數組中數字在源
        // 數組中的個數
        int[] count = new int[flag.length];
        // 4. 給源數組賦值0-9之間的隨機數
        for (int i = 0; i < src.length; i++) {
            src[i] = r.nextInt(10);
        }
        // 5. 統計標記數組中的每個元素在源數組中
        // 有多少個即給count數組賦值
        for (int i = 0; i < flag.length; i++) {
            for (int j = 0; j < src.length; j++) {
                // 如果標記數組中的數字在源數組中有,則count+1
                if (flag[i] == src[j]) {
                    count[i]++;
                }
            }
        }
        // 6. 輸出src和count的數據
        System.out.println("隨機產生的數據如下:");
        System.out.println(Arrays.toString(src));
        // System.out.println(Arrays.toString(count));

        // a.統計每個數字出現的次數
        // 如果count中的元素的值大於0,則輸出其下標和值
        for (int i = 0; i < count.length; i++) {
            if (count[i] > 0) {
                System.out.println("數字" + i + "出現" + count[i] + "次");
            }
        }

        // b.輸出出現最多次數的數字
        // 假設第一個統計的數字就是最多那個
        int max = count[0];
        int index = 0;
        for (int i = 0; i < count.length; i++) {
            if (count[i] > max) {
                max = count[i];
                index = i;
            }
        }
        System.out.println("出現次數最多的數字是" + index);

        // c. 輸出只出現一次的數字中最小的數字
        for (int i = 0; i < count.length; i++) {
            if (count[i] == 1) {
                System.out.println("出現1次的數字中最小的是" + i);
                break;
            }
        }

 

 

 

good luck!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 力爭清晰完整準確(逐步完善,持續更新) 1、String類為什麼是final的 首先分析String的源碼: 類被final關鍵字限定,說明它不可以被繼承,沒有子類。即持有一個String對象的引用,它必然是String類,而不會是其他的類。 value[]是用來存儲值的,被final關鍵字修飾,說 ...
  • 之前看過《深入瞭解Java虛擬機》感覺容易忘,今天寫一篇博客加深一下印象。 JVM的記憶體分配和垃圾回收(GC)主要發生在Java堆中。而Java堆根據對象的存活時間可以分為新生代和老年代,而新生代又細分為Eden區、From Survivor區、To Survivor區,這是由於新生代中的垃圾回收算 ...
  • 前言 這個周末被幾個技術博主的同一篇公眾號文章 "fastjson又被髮現漏洞,這次危害可導致服務癱瘓!" 刷屏,離之前漏洞事件沒多久,fastjson 又出現嚴重 Bug。目前項目中不少使用了 fastjson 做對象與JSON數據的轉換,又需要更新版本重新部署,可以說是費時費力。與此同時,也帶給 ...
  • 0909自我總結 drf框架中jwt 一.模塊的安裝 :http://getblimp.github.io/django rest framework jwt/ 他是個第三方的開源項目 :`pip install djangorestframework jwt` 使用 設定好的jwt 測試介面:po ...
  • 異常處理(Throwable)和繼承Exception類是Throwable類的子類Throwable類的主要方法自定義異常類繼承於Exception類,通過throw new Exception手動拋出異常Java不支持多繼承繼承的特性:繼承調用父子類構造函數順序問題 異常處理(Throwable ...
  • 前面介紹了通過JDBC如何管理資料庫,當時提到Statement專門提供了executeQuery方法用於查詢操作,為什麼查詢操作這麼特殊呢?這是因為其它語句跑完一次就了事了,頂多像insert、update、delete再返回受影響的記錄數量,但select命令跟它們不一樣,查詢語句可能會返回多條 ...
  • 項目 內容 這個作業屬於哪個課程 https://www.cnblogs.com/nwnu-daizh/ 這個作業的要求在哪裡 https://www.cnblogs.com/nwnu-daizh/p/11475377.html 作業學習目標 第一部分:結合Java和C基礎語法的異同比較,總結本周理 ...
  • 左值和右值:左值:用的是對象的身份(記憶體中的位置),右值:用的是對象的值(內容) 解引用與遞增(遞減)運算符連用: *ivec++:取ivec當前值並向後移動一個元素,等價於*(ivec++),本來++的優先順序高於* 條件運算符嵌套:(註意在語句兩端加上括弧,條件運算符優先順序極低) A?B:C?D: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...