Java基本语法学习的案例练习

news2024/11/16 4:46:53

       本文是在学习过C语言后,开始进行Java学习时,对于基本语法的一些案例练习。案例内容来自B站黑马编程课

1.HelloWorld

       问题介绍;请编写程序输出“HelloWorld”.

public class HelloWorld {  
    public static void main(String[] args) {  
        System.out.println("Hello World");  
    }  
}

      1. public class HelloWorld :公共类(Public Class),每个Java源文件中都可以有一个(且只有一个)公共类,这个公共类的名称必须与源文件的名称相同(包括大小写)。

     2.main(String [ ] args): 类中包含了一个主方法(main方法),这是Java程序的入口点。main方法接受一个字符串数组args作为参数,这个数组通常用于接收从命令行传递给程序的参数。

     3.println:在main方法内部,调用了System.out.println方法来在控制台上打印出字符串"Hello World"System.out是Java的标准输出流,而println是一个方法,用于输出数据并换行。


2.购买飞机票

        问题介绍:用户购买机票时,机票原价会按照淡季,旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折,请开发程序计算用户当前机票的优惠价。

package JAVA_study.src.Text;

import java.util.Scanner;

public class Text1 {
    public static void  main(String[] age){

        Scanner sr = new Scanner(System.in);
        double money = 1000.0; //票价
        System.out .println("请输入当前月份");
        int month = sr.nextInt();

        System.out.println("请输入选择机票种类");
        String type = sr.next();

       double place = sed(money,month,type);

       System.out.println("最终票价为" +place);

    }
    public static double sed(double money,int month,String type){

        double place = 1.0;

         if(month >= 5 && month <= 10){
             switch (type) {
                 case "头等舱" : place = 0.9 * money; break;
                 case "经济舱" : place = 0.85 * money;break;
             }
         }
         else {
            switch (type) {
                case "头等舱" : place = 0.7 * money; break;
                case "经济舱" : place = 0.65 * money; break;
            }
        }

        return place;
    }
}

     1.方法(类似于c中的函数)

    2.选择语句和判断语句

    对于if,else if,以及Switch case 语句和C语言用法是一致的。


3.生成验证码

        问题介绍:开发一个程序,可以生成指定位数的验证码,每位可以是数字,大小写字母。

package JAVA_study.src.Text;


import java.util.Random;
import java.util.Scanner;

public class Text2 {

    public static void  main(String[] args){

        Scanner sr = new Scanner(System.in);
        int length = sr.nextInt();
        System.out.println(code(length));
    }

    public static String code(int n){

        Random r= new Random();
        String ans = "";
        for(int i=0;i<n;i++){
            int type = r.nextInt(3);
            switch (type) {
                case 0: ans += r.nextInt(10);break;
                case 1: char str1 = (char)(r.nextInt(26)+65); ans += str1;break;
                case 2: char str2 = (char)(r.nextInt(26)+65+32); ans +=str2;break;
                }
            }
         return ans;
    }
}

1.随机数函数:Random,使用Random(3)生成从0-2的三位随机数,即包含左边,不包含右边。


4.评委打分

         问题介绍:在唱歌比赛中,可能有多个评委要给选手打分,分数是[0 -100] 之间的整数。选手最后的得分为:去掉最高分,最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并计算选手的最终得分。

package JAVA_study.src.Text;

import java.util.Scanner;

public class Text3 {
    public static void main(String[] arr){


        Scanner se = new Scanner(System.in);
        System.out.println("请输入评委人数");
        int num = se.nextInt();
        System.out.println("该学生的成绩为"+A(num)+"分");
    }

    public static double A(int num){
        Scanner se = new Scanner(System.in);
        double ave = 0.0;
        int MAX = 0;
        int MIN = 100;
        int sum = 0;
        int[] sums = new int [num];

        for(int i=0;i<num;i++){
            System.out.println("请输入第"+(i+1)+"位评委的分数");
            int sr = se.nextInt();
            sums[i] = sr;
            sum += sr;
            if(sr > MAX){MAX = sr;}
            if(sr < MIN){MIN = sr;}
        }
        ave =(sum-MAX-MIN)/(num-2.0);

        return ave;
    }
}
//这是没有看视频之前,自己写的,下面是视频代码
/*
import java.util.Scanner;

public class Text3 {
    public static void main(String[] arr){


        Scanner se = new Scanner(System.in);
        System.out.println("请输入评委人数");
        int num = se.nextInt();
        System.out.println("该学生的成绩为"+A(num)+"分");
    }

    public static double A(int num){
        Scanner se = new Scanner(System.in);
        double ave = 0.0;
        int MAX = 0;
        int MIN = 100;
        int sum = 0;
        int[] sums = new int [num];

        for(int i=0;i<num;i++){
            System.out.println("请输入第"+(i+1)+"位评委的分数");
            int sr = se.nextInt();
            sums[i] = sr;
            sum += sr;
            if(sr > MAX){MAX = sr;}
            if(sr < MIN){MIN = sr;}
        }
        ave =(sum-MAX-MIN)/(num-2.0);

        return ave;
    }
}*/

package JAVA_study.src.Text;

import java.util.Scanner;

public class Text3 {
    public static void main(String[] arr) {
    //目标:完成评委打分案例
        System.out.println("当前选手的得分是:"+getAverageScore(6));
    }
    public static double getAverageScore(int number){
        //定义一个动态初始化的数组,方便后期存入评委的打分
        int []scores = new int [number];

        //遍历数组每一个位置,依次录入评委分数
        Scanner sc = new Scanner(System.in);
        for (int i = 0;i<number;i++) {
            System.out.println("请您录入第"+(i+1)+"个评委的分数");
            int score = sc.nextInt();
            scores[i] = score;
        }

        int sum = 0; //求总分的变量
        int max = scores[0];
        int min = scores[0];

        //遍历一般找数据
        for (int i = 0; i < scores.length; i++) {
            int score =scores[i];
            sum += score;
            if(score > max){max= score;}
            if(score < min){min= score;}
        }
        return (sum-min-max)/(number-2.0);
    }
}

1.for循环:与C语言使用是一致的,for(循环变量;终止条件;变量变化){ 执行语句;}

在IDEA中,可以使用 循环的次数.fori(回车)来快捷输入一个for循环。

2.数据运算:包括四则运算,自增,自减运算都和C语言是一致的,还有浮点数除法除数要加小数点。


5.数字解密

           问题介绍:某系统的数字密码是一个四位数,如1983,为了安全,需要加密后再传输,加密规则是:对于密码的每位数,都加5,再对10求余,最后将所有的数字顺序反转,得到一组加密后的新数,请设计出满足本需求的加密程序。

package JAVA_study.src.Text;

import java.util.Scanner;

public class Text4 {
    public static void main(String [] ages){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要加密的数字");
        int num = sc.nextInt();
        int number = 1;
        int s = num;
        while(s > 1){number++;s=s/10;}
        int [] a = M(num,number);
        int result = 0;int p =1;
        for (int i = number-1; i >= 0; i--) {
             result += a[i]*p;
             p *=10;
        }
        System.out.println(result);
    }


    public static int [] M(int num,int number){
        int [] arrs = new int[number];
        for (int i = 0; i < number; i++) {
            arrs[i] = ((num%10)+5)%10;
            num = num/10;
        }
        return arrs;
    }
}

1.Java可以直接返回数组!!基本的计算方法与C语言是一致的,这里没有参考视频中的函数写法。


6.数组拷贝

        问题介绍:请把一个整型数组,例如存储了数据:11,22,33,拷贝成一个新数组出来

package JAVA_study.src.Text;

import java.util.Arrays;
import java.util.Scanner;

public class Text5 {
    public static void main(String []ags){
        System.out.println("请输入数组元素个数");
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        int [] arr = new int [number];
        for (int i = 0; i < number; i++) {
            System.out.println("请输入第"+(i+1)+"个数组元素");
            int input = sc.nextInt();
            arr[i] = input;
        }
        int [] result = Copy_arr(arr,number);
       for(int i=0;i<number;i++){
        System.out.println(result[i]);
}
    }

    public static int []Copy_arr(int []arr,int number){
        int []new_arr = new int [number];
        for (int i = 0; i < number; i++) {
            new_arr[i] = arr[i];
        }
        return new_arr;
    }
}

 java提供了许多简单有用的函数来实现一些功能。

    1.数组打印:除开for循环外,提供了一种System.out.println(Arrays.toString(result))的实现方法。这行代码的作用是打印数组result的内容到控制台,每个元素以字符串形式表示,元素之间用逗号加空格分隔,整个数组被方括号包围。

     2.数组拷贝:可以不用手动循环拷贝,可以使用System.arraycopy(arr, 0,new_arr, 0, number)

关于arraycopy函数

  • 参数解释

    • arrObject src):源数组,即你要从中复制数据的数组。
    • 0int srcPos):源数组中的起始位置(索引),从该位置开始复制数据。在这个例子中,它是 0,意味着从源数组的第一个元素开始复制。
    • new_arrObject dest):目标数组,即你要将数据复制进去的数组。这个数组必须已经存在,并且有足够的空间来存储要复制的数据。
    • 0int destPos):目标数组中的起始位置(索引),从该位置开始放置复制的数据。在这个例子中,它也是 0,意味着从目标数组的第一个元素开始放置数据。
    • numberint length):要复制的数组元素的数量。在这里,number 指定了从源数组复制到目标数组的元素数量。
  • 操作过程

    • System.arraycopy 方法会从 arr 数组的 0 索引位置开始,复制 number 个元素到 new_arr 数组的 0 索引位置。

    • 如果 new_arr 数组的长度小于 number,那么将会抛出 ArrayIndexOutOfBoundsException 异常,因为目标数组没有足够的空间来存储所有要复制的元素。

    • 如果源数组 arr 的长度小于 srcPos + length(在这个例子中是 0 + number),那么同样会抛出 ArrayIndexOutOfBoundsException 异常,因为源数组没有足够的元素可供复制。

  • 注意事项

    • 在使用 System.arraycopy 之前,确保目标数组 new_arr 已经被正确初始化,并且有足够的空间来存储要复制的数据。
    • 如果源数组和目标数组是同一个数组,并且源位置和目标位置有重叠,那么复制的结果将是未定义的。
    • 对于基本数据类型数组和对象数组,System.arraycopy 都可以正常工作。但是,对于对象数组,复制的是对象的引用,而不是对象本身。

7.抢红包

        问题介绍:一个大V直播时发起了抢红包活动,分别有:9.666.188.520.99999五个红包。请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完为止,注意:一个红包只能抽一次,先抽或后抽哪一个红包时随机的。

package JAVA_study.src.Text;

import java.util.Random;
import java.util.Scanner;

public class Text6 {
    public static void main(String [] args){
        //目标:完成抢红包案列的开发
        int []moneys ={9,666,188,520,99999};
        start(moneys);
    }
    public static void start(int []moneys){

        Scanner sc = new Scanner(System.in);
        Random r = new Random();
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入任意内容进行抽奖");
            sc.next(); //等待输入内容按到回车才往下走
            while(true) {
                int index = r.nextInt(moneys.length);
                int money = moneys[index];

                if (money != 0) {
                    System.out.println("恭喜您,您抽中了红包" + money);
                    moneys[index] = 0;
                    break;
                }
            }
        }
        System.out.println("活动结束");
    }
}

8.找素数

        问题介绍:判断101-200之间有多少个素数,并输出所有素数

package JAVA_study.src.Text;

import java.util.Arrays;

public class Text7 {
    public static void main(String[] args){
        su();
    }

    public static void su(){
        //目标是从101到200之间的素数
        int sum;
        int num =0;
        int [] result = new int [100];
        int input = 0;
        for (int i = 101; i <=200; i++) {
            sum = 0;
            for (int i1 = 2; i1 < i; i1++) {
                if(i%i1 == 0){sum++;}
            }
            if(sum == 0){result[input++] = i;num++;}
        }
            System.out.println("共有素数"+num+"个");
            for (int i = 0; i < num; i++) {
            System.out.println(result[i]+" ");
        }
    }

}

教学中提供的是信号位思想。使用flat来进行判断。

 for (int i = 101; i <=200; i++) {
            boolean flat = true;
            for (int i1 = 2; i1 < i; i1++) {
                if(i%i1 == 0){flat = false;}
            }
            if(flat){result[input++] = i;num++;}
        }

9.打印九九乘法表

                问题介绍 打印九九乘法表

public class MultiplicationTable {  
    public static void main(String[] args) {  
        // 外层循环控制行  
        for (int i = 1; i <= 9; i++) {  
            // 内层循环控制列  
            for (int j = 1; j <= i; j++) {  
                // 打印乘法表的一项,注意这里j和i的顺序决定了是横向打印还是纵向打印   
                System.out.print(j + "*" + i + "=" + (i * j) + "\t");  
            }  
            // 每完成一行的打印后,输出一个换行符以开始新的一行  
            System.out.println();  
        }  
    }  
}

10.模拟双色球

        问题介绍:用户投注7个号码,6个红色,1个蓝色。按照和系统随机出的这组号码判断中奖金额。

package JAVA_study.src.Text;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Text8 {
    public static void main(String[] args) {
    int [] a1 = inputarr();
    System.out.println(Arrays.toString(a1));

    int [] a2 = suijiarr();
    System.out.println(Arrays.toString(a2));
    cmp(a1,a2);
    }

    public static int[] inputarr() {
        int[] arr = new int[7];
        Scanner sc = new Scanner(System.in);

        for (int i = 0; i < 6; i++) {
            while (true) {
                System.out.println("请输入第" + (i + 1) + "位红球号码");
                int num = sc.nextInt();
                if (num < 1 || num > 33) {
                    System.out.println("号码有误 请检查");
                } else {
                    if (exist(arr, num)) {
                        System.out.println("输入的号码重复 请重试");
                    } else {
                        arr[i] = num;
                        break;
                    }
                }
            }
        }

        while (true) {
            System.out.println("请输入蓝球号码");
            int num = sc.nextInt();
            if (num < 1 || num > 16) {
                System.out.println("号码有误 请检查");
            } else {
                arr[6] = num;
                break;
            }
        }
        return arr;
    }
    public static int[] suijiarr() {
        int[] arr = new int[7];
        Random r = new Random();
        for (int i = 0; i < 6; i++) {
            while (true) {
                int n = r.nextInt(33)+1;
                if (!exist(arr, n)) {
                    arr[i] = n;
                    break;
                }
            }
        }
        while (true) {
            int n = r.nextInt(17)+1;
            if (!exist(arr, n)) {
                arr[6] = n;
                break;
            }
        }
            return arr;
        }
        private static boolean exist( int[] arr, int num){
            for (int i = 0; i < 7; i++) {
                if(arr[i] ==0){break;}
                if (arr[i] == num) {
                    return true;
                }
            }
            return false;
        }

        public static void cmp(int []a1,int []a2){
        int redcount=0,bluecount=0;
            for (int i = 0; i < 6; i++) {
                for (int j = 0; j < 6; j++) {
                    if(a1[i] == a2[j]){redcount ++;break;}
                }
            }
            if(a1[6] == a2[6]){bluecount++;}
            switch(redcount){
                case 6:if(bluecount == 1){System.out.println("恭喜您中奖 1000万元");break;}else{System.out.println("恭喜您中奖 500万元");break;}
                case 5:if(bluecount == 1){System.out.println("恭喜您中奖 3000元");break;}else{System.out.println("恭喜您中奖 200元");break;}
                case 4:if(bluecount == 1){System.out.println("恭喜您中奖 200元");break;}else{System.out.println("恭喜您中奖 10元");break;}
                case 3:if(bluecount == 1){System.out.println("恭喜您中奖 10元");break;}else{System.out.println("恭喜您中奖 5元");break;}
                case 2:if(bluecount == 1){System.out.println("恭喜您中奖 5元");break;}
                case 1:if(bluecount == 1){System.out.println("恭喜您中奖 5元");break;}
                case 0:if(bluecount == 1){System.out.println("恭喜您中奖 5元");break;}System.out.println("很遗憾 您没有中奖");break;
            }
        }

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1961033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树状机器学习模型综述(含python代码)

树状机器学习模型综述 树状模型是机器学习中一种非常重要的算法类别&#xff0c;因其直观的结构和良好的可解释性而广泛应用于分类和回归任务。本文将综述几种常见的树状模型&#xff0c;包括决策树、随机森林、LightGBM、XGBoost和CatBoost&#xff0c;讨论它们的原理、用途以…

高品质定制线缆知名智造品牌推荐-精工电联:高压线缆行业定制服务的领航者

定制线缆源头厂家推荐-精工电联&#xff1a;高压线缆行业定制服务的领航者 在当今这个高度信息化的社会&#xff0c;电力传输与分配系统的稳定运行至关重要。作为连接各个电力设备的纽带&#xff0c;高压线缆的质量直接关系到电力系统的安全性和稳定性。在定制高压线缆行业中&a…

【RK3568】点亮eDP屏幕+双屏异显

一、驱动eDP屏幕 一般来说&#xff0c;屏幕的规格书中会找到屏幕的相关参数&#xff0c;如没有&#xff0c;也可直接找屏幕厂商要&#xff0c;首先打开屏幕的规格书&#xff0c;搜索EDID Table&#xff0c;可找到如下信息&#xff1a; &#xff08;1&#xff09;显示时序配置 将…

越是熟人之间,越要注意这三个方面

不管什么时候&#xff0c;不管与谁相处&#xff0c;社交的边界和底线永远都是不变的。 对待陌生人的时候&#xff0c;我们总会按照既定的章法和礼节行事&#xff0c;可是在对待熟人的时候&#xff0c;很多人却忘了这些章法和礼节。虽然彼此熟悉了&#xff0c;不需要那么在乎章…

狗都能看懂的Imitation Learning的讲解

上一篇博客讲述了奖励稀疏时的训练方法。实际场景中&#xff0c;可能难度还会更大一些。很多场景很难有一个明确的reward&#xff0c;甚至没有reward。那么这里就提出模仿学习&#xff0c;即agent模仿expert的操作。具体两个方法是&#xff1a;Behavior Cloning、Inverse Reinf…

从0到100:旅拍小程序开发笔记(上)

背景调研 旅拍店或者摄影师可以在小程序上设置自己的可预约时间&#xff0c;价格&#xff0c;拍摄介绍&#xff0c;并定义不同的套餐(服装套数&#xff0c;底片张数&#xff0c;精修数量&#xff0c;取景风格&#xff0c;套餐价格等)&#xff0c;顾客可以根据套餐内容和日程安…

定制化Windows系统

定制化Windows系统 1、定制化需求介绍 预定义安装常用软件的原版操作系统&#xff0c;节省花费的时间。定制前提&#xff0c;你需要1块硬盘、1台&#xff08;2台&#xff09;测试电脑、一个PE盘&#xff08;wepe最好&#xff09;&#xff0c;原版系统镜像&#xff0c;虚拟光驱…

鸿蒙应用框架开发【选择并查看文档与媒体文件】 本地数据与文件

选择并查看文档与媒体文件 介绍 应用使用ohos.file.picker、ohos.file.fs等接口&#xff0c;实现了picker拉起文档编辑保存、拉起系统相册图片查看、拉起视频并播放的功能。 效果预览 使用说明&#xff1a; 在首页&#xff0c;应用显示查看最近打开文件功能的跳转按钮&…

GD32手把手教你移植FlashDB(片外Flash) -- 3.FlashDB使用

GD32手把手教你移植FlashDB(片外Flash) – 1.FlashDB-sfud移植 GD32手把手教你移植FlashDB(片外Flash) – 2.FlashDB移植 GD32手把手教你移植FlashDB(片外Flash) – 3.FlashDB使用 示例代码: https://gitee.com/ljmRD/GD32F427_FlashDB 3.FlashDB使用 main() /*************…

浅谈取样器之SSH Command

浅谈取样器之SSH Command JMeter的SSH Command取样器是一个强大的功能&#xff0c;允许用户在JMeter测试计划中执行远程SSH命令。这对于需要与Linux/Unix服务器交互以执行系统命令、脚本或者进行性能测试验证的场景尤为有用。通过这个取样器&#xff0c;您可以集成服务器端操作…

Linux中进程通信之信号

信号 信号通信&#xff0c;其实就是内核向用户空间进程发送信号&#xff0c;只有内核才能发信号&#xff0c;用户空间进程不能发送信号。 关于信号指令的查看&#xff1a;kill -l 例如我们之前使用的kill -9 pid用于杀死一个进程 使用一个死循环 成功发送kill -9指令&#x…

对于AI大模型发展态势的几点认识

本期内容从AI大模型产业的视角出发&#xff0c;全面审视该产业的发展现状&#xff0c;深入剖析其成长轨迹和未来趋势&#xff0c;旨在为人工智能产业的参与者提供一个全面的视角&#xff0c;更好地理解AI大模型产业的复杂性、动态性和潜力&#xff0c;以及如何在这个快速变化的…

Ruoyi 快速开发平台

Ruoyi 快速开发平台 一、官网二、准备工作2.1 环境要求2.2 必要配置 三、运行系统3.1 后端运行3.2 前端安装及运行 四、自定义开发4.1 新增业务模块4.2 代码生成4.2.1 创建菜单4.2.2 后端代码4.2.3 前端代码 一、官网 链接: 前后端分离版本 回到目录 二、准备工作 2.1 环境要…

UDP服务器端bind失败问题

本人使用microchip芯片开发&#xff0c;使用UDP虚拟机通讯&#xff0c;经常提示bind失败&#xff0c;返回-1&#xff0c;尝试了以前UDP作为客户端使用时正常&#xff0c;故硬件链路没问题。 一、可能有几个原因&#xff1a; 端口实际上被占用&#xff1a;最明显的原因是端口真…

基于入侵野草算法的KNN分类优化matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 入侵野草算法 4.2 K近邻分类器&#xff08;KNN&#xff09; 4.3 基于IWO的KNN分类优化 5.完整程序 1.程序功能描述 基于入侵野草算法的KNN分类优化。其中&#xff0c;入侵野草算法是一…

GEE APP:利用谷歌地球引擎实现更有效的草原管理:决策支持应用视角

简介 草原占地球表面和农田的很大一部分,对人类福祉和畜牧业至关重要。由于牧区基础设施不发达、通信不畅,牧民和草原管理部门在有效控制牧民放牧行为和草原利用方面面临挑战。要解决这一问题,促进草原的可持续利用并保护其生态系统服务,就需要基于云的放牧管理和决策支持…

C++初阶大总结

目录 一.命名空间 1.命名空间定义 2.命名空间使用 二.C++输入&输出 三.缺省参数 四. 函数重载 五.引用 1.常引用 2.传值、传引用效率比较 3.引用和指针的区别 4.引用和指针的不同点: 小知识点: 六.内联函数 七.auto关键字(C++11) 1.auto的使用细则 八.基于…

24暑假算法刷题 | Day23 | LeetCode 39. 组合总和,40. 组合总和 II,131. 分割回文串

目录 39. 组合总和题目描述题解 40. 组合总和 II题目描述题解 131. 分割回文串题目描述题解 39. 组合总和 点此跳转题目链接 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有…

Dolphinscheduler 3.2.1bug记录

问题1&#xff1a;分页只展示首页 解决方案&#xff1a; [Bug][API] list paging missing totalpage by Gallardot Pull Request #15619 apache/dolphinscheduler GitHub 问题2:Hive 数据源连接失败 解决方案&#xff1a;修改源码&#xff1a;HiveDataSourceProcessor.cla…