首页 > 编程语言 >Java学习笔记4

Java学习笔记4

时间:2023-05-14 13:22:48浏览次数:39  
标签:arr Java int System 笔记 学习 length public out

练习题

练习1:机票

机票价格按照淡旺季,头等舱和经济舱收费,输入机票原价,月份和头等舱或经济舱。

按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。

import java.util.Scanner;

public class Hello{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入购票月份:");
        int month = sc.nextInt();
        System.out.println("请输入机票原价:");
        int ticket = sc.nextInt();
        System.out.println("请输入购票舱位0头等舱,1经济舱:");
        int seat = sc.nextInt();
        if(month>=5 && month<=10){
            ticket = Grtticket(month,ticket,seat,0.9,0.85);
        } else if ((month>=1 && month<=4) || (month>=11 && month<=12)) {
            ticket = Grtticket(month,ticket,seat,0.7,0.65);
        }else{
            System.out.println("请正确输入");}
        System.out.println(ticket);
    }
    public static int Grtticket(int month,int ticket,int seat,double v1,double v2){
        if(seat == 0){
            ticket = (int)(ticket*v1);
        } else if (seat == 1) {
            ticket = (int)(ticket*v2);
        }else{
            System.out.println("请正确输入");
        }return ticket;
    }
}

注意:Ctrl + Alt + M 自动抽取方法

练习2:找质数

判断101-200之间有多少个素数,并输出所有的素数。

public class Hello {
    public static void main(String[] args) {
        int count = 0;
        for (int i = 101; i <= 200; i++) {
            boolean flag=true;
            for(int j =2;j<i;j++){
                if(i%j==0){
                    flag=false;
                    break;
                }
            }
            if(flag){
                System.out.println("这个数" + i + "是一个质数");
                count++;
            }
        }
        System.out.println("这组数一共有" + count + "个质数");
    }
}

练习3:开发验证码

定义方法实现随机产生一个5位的验证码,长度为5,前面四位为大写或小写字母,最后一个数字

import java.util.Random;

public class Hello {
    public static void main(String[] args) {
        char[]arr = new char[52];
        for (int i = 0; i < arr.length; i++) {

            if(i<=25) {
                arr[i] =(char)(97+i);}
            else{arr[i] =(char)(65+i-26);}
        }
        String result ="";
        Random r = new Random();
        for (int i = 0; i < 4; i++) {
            int randomIedx = r.nextInt(arr.length);
            result = arr[randomIedx]+result;
        }
        int number =r.nextInt(10);
        result =result+number;
        System.out.println(result);
    }
}

练习4:数组元素的复制

把一个数组中的元素复制到另一个新数组中去

public class Hello {
    public static void main(String[] args) {
        int[]arr1 = {11,22,33,44,55};
        int[]arr2 = new int[arr1.length];
        for (int i = 0; i < arr2.length; i++) {
             arr2[i] =arr1[i];
        }
        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i]+" ");
        }
    }
}

数组遍历:将数组中所有的内容取出来,取出来之后可以(打印,求和,判断…)

注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印。

在 Java 当中,关于数组的一个长度属性:length

调用方式:数组名.length

扩展:自动快速生成数组的遍历方式,idea 提供的

格式:数组名.fori

for (int i = 0; i < arr.length; i++){
	System.out.println(arr[i]);
}

方法调用格式三种

直接调用:方法名(实参);   //对于有返回值的方法无法打印出来,针对于无返回值(void)的类型
赋值调用:返回值类型 变量名 = 方法名(实参);       //有返回值的类型
输出调用:System.out.println(方法名(实参));    //有返回值的类型

例如
public class Hello {
    public static void main(String[] args) {
        //直接调用,没有打印出来
    C(1,2);
         //赋值调用
    int sum =C(1,2);
        System.out.println(sum);
        //输出调用
    System.out.println(C(2,2));
    }
    public static int C(int a, int b){
        int c = a+b;
        return c;
    }
}

练习5:评委打分

在唱歌比赛中,有6位评委给选手打分,分数范围是【0-100】之间的整数,选手的最终得分为:去掉最低分和最高分,然后取平均分。

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        //键盘录入评委分数
        int[] scoreArr = getScore();
        for (int i = 0; i < scoreArr.length; i++) {
            System.out.println(scoreArr[i]);
        }
        //求最大值
        int max = getMax(scoreArr);
        //求最小值
        int min = getMin(scoreArr);
        //求和
        int sum = getSum(scoreArr);
        //求平均分
        int avg = (sum-max-min)/(scoreArr.length-2);
        System.out.println("该选手最终得分:" + avg);
    }

    //键盘录入
    public static int[] getScore() {
        int[] score = new int[6];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < score.length; ) {
            System.out.println("输入该选手得分:");
            int scores = sc.nextInt();
            if (scores >= 0 && scores <= 100) {
                score[i] = scores;
                i++;
            } else {
                System.out.println("请继续录入:");
            }
        }
        return score;
    }

    //求最大值
    public static int getMax(int[] scoreArr) {
        int max = scoreArr[0];
        for (int i = 0; i < scoreArr.length; i++) {
            if (scoreArr[i] > max) {
                max = scoreArr[i];
            }
        }
        return max;
    }

    //求最小值
    public static int getMin(int[] scoreArr) {
        int min = scoreArr[0];
        for (int i = 0; i < scoreArr.length; i++) {
            if (scoreArr[i] < min) {
                min = scoreArr[i];
            }
        }
        return min;
    }

    //求和
    public static int getSum(int[] scoreArr) {
        int sum = 0;
        for (int i = 0; i < scoreArr.length; i++) {
            sum = sum + scoreArr[i];
        }return sum;
    }
}

练习6数字加密

某系统的数字密码(大于0)比如1983,采用加密方式进行传输。规则如下,先得到每位数,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新数字。

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个密码:");
        int number = sc.nextInt();
        //判断用户输入的密码位数
        int count = 0;
        int temp = number;
        while(number != 0 ){
            number = number/10;
            count++;
       }
        //定义一个动态数组,数组个数为输入密码位数
        int []arr = new int[count];
        int dex = arr.length-1;
        while(temp!=0){
             int ge = temp%10;
             temp = temp/10;
             arr[dex] = ge;
             dex--;
        }
        //某系统的数字密码(大于0)比如1983,采用加密方式进行传输。规则如下
        // 先得到每位数,然后每位数都加上5,
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] + 5;
        }
        // 再对10求余
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i]%10;
        }
        // 最后将所有数字反转,得到一串新数字。
        for (int i = 0,j = arr.length-1; i < j; i++,j--) {
            int tem = arr[i];
            arr[i] = arr[j];
            arr[j] = tem;
        }
        //把数字拼在一起
        int number1 =0;
        for (int i = 0; i < arr.length; i++) {
             number1 = number1*10+arr[i];
        }
        System.out.println(number1);
    }
}

练习7数字解密6

import java.util.Scanner;

public class Hello {
    public static void main(String[] args) {
        //取到用户密码
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的密码:");
        int number = sc.nextInt();
        //判断用户密码位数
        int count = 0;
        int tap = number;
        while(number!=0){
            number = number/10;
            count++;
        }
        //根据用户密码位数创建一个动态数组
        int[]arr = new int[count];
        //把密码存入数组中
        int bba = arr.length-1;
        while (tap!=0) {
            int ge = tap%10;
            tap = tap /10;
            arr[bba] = ge;
            bba--;
        }
        //把数组的每一位取反
        for (int i = 0,j = arr.length-1; i < j; i++,j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        //对10取余的逆运算
        //5 6 7 8 9 10 11 12 13 14 
        //5 6 7 8 9  0  1  2  3  4
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>=5 && arr[i]<=9){
                arr[i] = arr[i];
            } else if (arr[i]>=1 && arr[i]<=4) {
                arr[i] = arr[i]+10;
            }
        }
        //数组各个数-5
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i]-5;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + "");
        }
    }
}

练习8抢红包

一个大V直播,奖品是现金红包,分别有(2,588,888,1000,10000)五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机不重复。

import java.util.Random;

public class Hello {
    public static void main(String[] args) {
        // 分别有(2,588,888,1000,10000)五个奖金
        //定义一个数组表示奖池
        int[] arr = {2, 588, 888, 1000, 10000};
        //再定义一个数组表示抽到的奖项
        int[] newArr = new int[arr.length];
        Random r = new Random();
        for (int i = 0; i < 5;) {
            //再arr数组里随机获取一个索引
            int newRandom = r.nextInt(arr.length);
             int prise = arr[newRandom];
             boolean flag =result(newArr,  prise);
             //判断为不重复,则存入,索引+1
             if(!flag){
                 newArr[i] = prise;
                 i++;
             }
        }
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }
    }
//定义一个方法用来判断是否重复
    public static boolean result(int[] arr, int prise) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == prise) {
                return true;
            }
        }
        return false;
    }
}

代码简化

import java.util.Random;

public class Hello {
    public static void main(String[] args) {
        int[]arr = {2,588, 888, 1000, 10000};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int arrindex = r.nextInt(arr.length);
            int tem = arr[i];
            //拿着i和随机索引替换
            arr[i] = arr[arrindex];
            arr[arrindex] = tem;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

练习9模拟双色球

中将说明

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

public class Hello {
    public static void main(String[] args) {
        //生成中将号码
        int[]arr = creatNumber();
        //录入用户彩票号码
        int[]userInputArr = userNumber();
        //判断中将情况
        int redCount = 0;
        int blueCount = 0;
        for (int i = 0; i < userInputArr.length-1; i++) {
            int redNumber = userInputArr[i];
            for (int i1 = 0; i1 < arr.length-1; i1++) {
                if(redNumber == arr[i1]){
                    redCount++;
                    break;
                }
            }
        }
        int blueNumber = userInputArr[userInputArr.length-1];
        if(blueNumber == arr[arr.length-1]){
            blueCount++;
        }
        if(redCount == 6 && blueCount == 1){
            System.out.println("恭喜你!中将1000万");
        } else if (redCount == 6 && blueCount == 0) {
            System.out.println("恭喜你baby,中将500万");
        } else if (redCount == 5 && blueCount == 1) {
            System.out.println("恭喜你兄弟,中将3000元");
        } else if ((redCount == 5 && blueCount ==0) || (redCount == 4 && blueCount == 1)) {
            System.out.println("恭喜你哥们,中将200元");
        }else if ((redCount == 4 && blueCount ==0) || (redCount == 3 && blueCount == 1)) {
            System.out.println("恭喜你小哥,中将10元");
       }else if ((redCount == 2 && blueCount ==1) || (redCount == 1 && blueCount == 1) ||(redCount == 0 && blueCount == 1)) {
            System.out.println("恭喜你,中将5元");
        }else{
            System.out.println("谢谢参与");
        }
 }
    public static int[] userNumber(){
        int[]arr = new int[7];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 6; ) {
            System.out.println("请输入第" + (i+1) +"个红球号码:");
            int redNumber = sc.nextInt();
            if(redNumber>=1 && redNumber<=33){
                boolean flag = panNumber(arr,redNumber);
                if(!flag){
                    arr[i] = redNumber;
                    i++;
                }else{
                    System.out.println("输入的号码已重复");
                }
            }else{
                System.out.println("输入的红球号码超出范围");
            }
        }
        System.out.println("请输入蓝球号码:");
        while (true) {
            int blueNumber = sc.nextInt();
            if(blueNumber>=1 && blueNumber<=16){
                arr[arr.length-1] = blueNumber;
                break;
            }else{
                System.out.println("输入的号码超出范围");
            }
        }
        return arr;
    }

    public static int[] creatNumber() {
        int[]arr =  new int[7];
        Random r = new Random();
        for (int i = 0; i < 6; ) {
            int redNumber = r.nextInt(31) + 1;
            boolean flag =panNumber(arr,redNumber);
            if(!flag){
                arr[i] = redNumber;
                i++;
            }
        }
        int blueNumber = r.nextInt(6)+1;
        arr[arr.length-1] = blueNumber;
        return arr;
    }
    public static boolean panNumber(int[] arr, int number) {
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == number) {
                return true;
            }
        }
        return false;
    }
}

练习10二维数组

二维数组静态初始化

格式:数据类型[][]数组名 = new 数据类型[][]{{元素1,元素2},{元素1,元素2}};

范例:int[][]arr = new int[][]{{11,22},{33,44}};

简化格式:数据类型[][]数组名 = {{元素1,元素2},{元素1,元素2}};

范例:int[][]arr = {{11,22},{33,44}};

每一个一维数组其实是二维数组的元素,所以每一个一维数组之间需要用逗号隔开,最后一个一维数组后面不需要加逗号。

获取方法

System.out.println(arr[0]);  //表示取二维数组中的第一个一维数组
//arr[0]二维数组中的第一个一维数组
//arr[0][0]获取第一个一维数组中0索引的元素
System.out.println(arr[0]);

二维数组的遍历

//外循环:遍历二维数组,得到里面的每一个一维数组
for (int i = 0; i < arr.length; i++) {
			//i:表示二维数组中的每一个索引
			//arr[i]:表示二位数组中每一个元素(一维数组)
            //内循环:遍历一维数组,得到里面的每一个元素
            for (int j = 0; j < arr[i].length; j++) {
            //j:表示一维数组中的每一个元素
                System.out.print(arr[i][j] + " ");
            }

二维数组的动态初始化

格式:数据类型[][]数组名 = new数据类型[m][n];
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组,可以存放多少个元素

范例:int[][]arr = new int[2][3];
该数组可以存放2个一维数组,每一个一维数组中可以存放3个int类型元素

代码实现

public class Hello {
    public static void main(String[] args) {
        int[][]arr =new int [3][5];
        //给一维数组赋值
        arr[0][0] = 10;
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + " ");
            }
            System.out.println();
        }
    }
}

二维数组的内存原理图

二维数组

练习

某商城每个季度的营业额如下:单位(万元)

第一季度:226644

第二季度:777388

第三季度:252465

第四季度:116699

要求计算出每个季度的总营业额和全年的总营业额

public class Hello {
    public static void main(String[] args) {
        int[][] arr = {
                {11, 66, 99},
                {11, 66, 99},
                {25, 24, 65},
                {77, 73, 88}};
        int yearSum = 0;
        for (int i = 0; i < arr.length; i++) {
            int [] jiduArr = arr[i];
            int sum = getSuma(jiduArr);
            System.out.println("第" + (i+1) +"季度的营业额为" + sum);
            yearSum = sum + yearSum;
        }
        System.out.println("全年的总营业额为:" + yearSum);
    }
    public static int getSuma(int[]arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
             sum = sum + arr[i];
        }return sum;
    }
}

标签:arr,Java,int,System,笔记,学习,length,public,out
From: https://www.cnblogs.com/zhangyu520/p/17399152.html

相关文章

  • Java学习笔记5
    先休息一下眼睛......
  • MySQL学习日志九,分页和排序
    一、排序查询orderby排序升序ASC降序DESC1.升序排序--查询参加考试的同学,包含的信息包括学号,姓名,科目名,分数(以分数升序展示)SELECTs.studentno,studentname,subjectname,studentresultFROMstudentsINNERJOINresultrONs.studentno=r.studentnoinner......
  • Java数组之杨辉三角
    publicclassArrayTestor02{publicstaticvoidmain(String[]args){//构造杨辉三角int[][]yanghui=newint[10][];for(inti=0;i<yanghui.length;i++){int[]row=newint[i+1];yanghui[i]=row;......
  • Java学习笔记1
    简述Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。语言特性Java之所以被开发,是要达到以下五个目的:应当使用面向对象程序设计方法学应当允许同一程序在不同的计算机平台执行应当包括内建的对计算机......
  • Golang后端研发岗位的面试笔记整理
    今年互联网行情真不太行,暑期实习投了十几家,在经历了各种一面挂和二面挂后,终于在最后拿到了百度的暑期实习offer,真的不容易,中间一度被面试搞得怀疑人生,太难了QAQ这是本人花了点时间整理的一些与Golang后端研发岗位相关的面试笔记,欢迎大家及时补充当然并不局限于Golang研发岗位,......
  • Scrum团队流程学习理解
    团队如何最大限度地发挥Scrum和敏捷的优势?回想一下,Scrum团队在Scrum的框架内定义了自己的流程。这其中包括方法、工具和互动以及如何履行Scrum角色的职责、如何使用工件和事件等。从产品管理方法到研发及质量管理方法。从团队的沟通协作方式到团队成员如何有效利用团队知识提升自......
  • 前端语言串讲 | 青训营笔记
    参考了这篇博客前端语言串讲(万字笔记)|青训营笔记,并加入了一些分析思考课程总结前端语言的基本能力基础的前端三剑客HTML、CSS、JavaScriptHTML(超文本标记语言)HTML是Web页面的基础结构。它用于描述网页的内容和结构。HTML使用一系列标记(称为标签)来定义页面元素,如......
  • Java的线程
    介绍线程线程是系统调度的最小单元,一个进程可以包含多个线程,线程是负责执行二进制指令的。每个线程有自己的程序计数器、栈(Stack)、寄存器(Register)、本地存储(ThreadLocal)等,但是会和进程内其他线程共享文件描述符、虚拟地址空间等。对于任何一个进程来讲,即便我们没有主动去创建......
  • Java:SpringBoot整合MyBatis-Plus实现MySQL数据库的增删改查
    MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。文档https://baomidou.com/目录一、引入坐标二、配置三、CURD测试四、API数据接口一、引入坐标<dependency><groupId>com.baomidou</groupId><artifactId>m......
  • Java:Linux/Windows/macOS安装JDK
    目录开发环境安装JDK生产环境安装JDKJava版本开发环境安装JDK可以通过oracle的官方下载地址,下载安装https://www.oracle.com/cn/java/technologies/downloads/https://www.oracle.com/cn/java/technologies/downloads/archive/生产环境安装JDK文档https://openjdk.org/install/#Ja......