首页 > 编程语言 >【Java零基础视频教程】综合练习题(一)——基础练习

【Java零基础视频教程】综合练习题(一)——基础练习

时间:2024-08-03 15:28:32浏览次数:17  
标签:练习题 arr Java int System length println 视频教程 out

文章目录

基础练习

飞机票

机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
​ 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。

可以设置一个获取价格的函数getPrice,传入机票原价、月份和头等舱或经济舱,得出折后价
在主函数中,根据月份和舱型改变参数

package com.itheima;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc  = new Scanner(System.in);
        System.out.println("请输入票价");
        double price = sc.nextInt();
        System.out.println("请输入月份");
        int month = sc.nextInt();
        System.out.println("请输入座位");
        String seat = sc.next();

        if(month>=5 && month<=10){
            price=getPrice(price,seat,0.9,0.85);
        }else if ((month >= 1 && month <= 4) || (month >= 11 && month <= 12)){
            price=getPrice(price,seat,0.7,0.65);
        }else{
            System.out.println("输入月份有误");
        }

        System.out.println(price);
    }

    public static int getPrice(double price,String seat,double v0,double v1){
        if(seat.equals("头等舱")){
            return (int)(price*v0);
        }else{
            return (int)(price*v1);
        }     
    }
}

打印素数

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

package com.itheima.test;

public class Test2 {
    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 + "个质数");
    }
}

生成验证码

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

    //方法:
    //在以后如果我们要在一堆没有什么规律的数据中随机抽取
    //可以先把这些数据放到数组当中
    //再随机抽取一个索引

先把所有的验证码组成成分放入一个数组中,然后在这个数组中随机数抽取。
在String类的字符串时,要写空字符串,String result = "";

package com.itheima;

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

public class Main {
    public static void main(String[] args) {

        //1.大写字母和小写字母都放到数组当中
        char [] arr = new char[52];
        for(int i=0;i<arr.length;i++){
            if(i<=25){
                arr[i]=(char)(97+i);//添加小写字母        a--97
            }else{
                arr[i]=(char)(65+i-26);//添加大写字母     A--65
            }
        }
		//定义一个字符串类型的变量,用来记录最终的结果
        String result = "";
	
		//2.随机抽取4次
        Random random = new Random();
        for(int i=0;i<4;i++){
            int index = random.nextInt(arr.length);
            result+=arr[index];
        }
        
        //3.随机抽取一个数字0~9
        result+=(int)(random.nextInt(10));
        System.out.println(result);
    }
}

复制数组

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

package com.itheima.test;

public class Test4 {
    public static void main(String[] args) {
        //1.定义一个老数组并存储一些元素
        int[] arr = {1,2,3,4,5};
        //2.定义一个新数组的长度跟老数组一致
        int[] newArr = new int[arr.length];
        //3.遍历老数组,得到老数组中的每一个元素,依次存入到新数组当中
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        //4.新数组中已经存满元素了
        for (int i = 0; i < newArr.length; i++) {
            System.out.println(newArr[i]);
        }

    }
}

评委打分

在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。

可设置4个函数,获取打分、计算最高分、计算最低分、计算平均分。
使用数组来存取分数。

package com.itheima;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        int[] scoreArr = getScores();
        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);
    }

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

    private static int getMin(int[] scoreArr) {
        int min = scoreArr[0];
        for(int i = 1; i < scoreArr.length; i++){
            if(scoreArr[i] < min){
                min = scoreArr[i];
            }
        }
        return min;
    }

    private static int getMax(int[] scoreArr) {
        int max = scoreArr[0];
        for(int i = 1; i < scoreArr.length; i++){
            if(scoreArr[i] > max){
                max = scoreArr[i];
            }
        }
        return max;
    }

    private static int[] getScores() {
        int[] scores = new int[5];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < scores.length; ) {
            System.out.println("请输入第" + (i + 1) + "个分数");
            int score = sc.nextInt();
            if(score>=0 && score<=100){
                scores[i] = score;
                i++;
            }else{
                System.out.println("输入有误,请重新输入");
            }
        }
        return scores;
    }
}

数字加密

某系统的数字密码(大于0),比如1983,采用加密方式进行传输。

规则如下:
​ 先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。

举例:

		1	9	8	3
+5		6   14  13  8
%10		6   4   3   8
反转	   8   3   4   6
加密后的结果就是:8346

把一个数字上的各位数字拆出来分入数组中。为了在数组中能顺序存储位数上的数字,可以起始索引index设为length-1,然后倒着填入数据,具体看代码getNum()函数

package com.itheima;


import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("请输入密码:");
        Scanner sc = new Scanner(System.in);
        int start = sc.nextInt();
        int[] startArr = getNum(start);



        for (int i = 0; i < startArr.length; i++) {
            startArr[i] = startArr[i] + 5;
            startArr[i] = startArr[i] % 10;
        }

        for (int i = startArr.length-1; i >= 0 ; i--) {
            System.out.print(startArr[i]);
        }

    }

    private static int[] getNum(int start) {
        int temp = start;
        int count = 0;
        while(start !=0){
            start /=10;
            count++;
        }

        int[] arr = new int[count];
        int index = arr.length-1;
        while(temp!=0){
            int ge = temp % 10;
            arr[index] = ge;
            temp /= 10;
            index--;
        }
        return arr;
    }
}

抽奖

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

888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出

常规解法是把在奖金池数组中,用一个随机数模拟抽取第x个奖金,然后放入新数组中。之后再奖金池中抽取后需要在新数组确认是否抽取过,如果是则重新抽取。

下面的解法是把奖金池打乱,打乱后顺序输出。

package com.itheima.test;

import java.util.Random;

public class Test10 {
    public static void main(String[] args) {
        //1.把奖池里面的所有奖项打乱顺序
        int[] arr = {2, 588, 888, 1000, 10000};
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
            int randomIndex = r.nextInt(arr.length);
            int temp = arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex] = temp;
        }
        //2.遍历奖池,从0索引开始获取每一个奖项
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

    }
}

双色球

在这里插入图片描述

package com.itheima;

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

public class Main {
    public static void main(String[] args) {
        //1.随机生成双色球中奖号
        int[] winNums = getNumber();

        //2.键盘录入用户投注号码
        int [] userNums = new int[6];
        //输入红球
        for (int i = 0; i < userNums.length; i++) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第" + (i+1) + "个红球号码");
            userNums[i] = sc.nextInt();
        }
        //输入蓝球
        System.out.println("请输入蓝球号码");
        Scanner sc = new Scanner(System.in);
        userNums[userNums.length-1] = sc.nextInt();


        //3.判断中奖情况

        int redCount = 0;
        int blueCount = 0;

        for (int i = 0; i < userNums.length-1; i++) {
            for (int j = 0; j < winNums.length-1; j++) {
                if(userNums[i] == winNums[j]){
                    redCount++;
                }
            }
        }
        for (int i = userNums.length-1; i < userNums.length; i++) {
            if(userNums[i] == winNums[i]){
                blueCount++;
            }
        }

        if(redCount==6&&blueCount==1){
            System.out.println("恭喜你,中奖了1000万!");
        }else if(redCount==6){
            System.out.println("恭喜你,中奖了500万!");
        }else if (redCount==5&&blueCount==1){
            System.out.println("恭喜你,中奖了3000元!");
        }else if (redCount==5){
            System.out.println("恭喜你,中奖了200元!");
        }else if (redCount==4&&blueCount==1){
            System.out.println("恭喜你,中奖了200元!");
        }else if (redCount==4){
            System.out.println("恭喜你,中奖了10元!");
        }else if (redCount==3&&blueCount==1){
            System.out.println("恭喜你,中奖了10元!");
        }else{
            System.out.println("恭喜你,中奖了5元!");
        }
    }

    private static int[] getNumber() {
        int[] winNums = new int[7];
        //红色球中奖号码
        for (int i = 0; i < winNums.length; i++) {
            Random random = new Random();
            int redNum = random.nextInt(33) + 1;
            if(isaBoolean(winNums, redNum)){
                winNums[i] = redNum;
            }else{
                i--;
            }
        }
        //蓝色球中奖号码
        for (int i = winNums.length-1; i < winNums.length; i++) {
            Random random = new Random();
            winNums[i] = random.nextInt(16) + 1;
        }

        System.out.println("双色球中奖号码为:");
        for (int i = 0; i < winNums.length; i++) {
            System.out.print(winNums[i] + " ");
        }
        System.out.println();
        return winNums;
    }

    private static boolean isaBoolean(int[] winNums, int redNum) {
        for (int i = 0; i < winNums.length; i++) {
            if(winNums[i] == redNum){
                return false;
            }
        }
        return true;
    }
}

标签:练习题,arr,Java,int,System,length,println,视频教程,out
From: https://blog.csdn.net/2201_75475240/article/details/140891195

相关文章

  • Java基础总结
    1,JavaJMM(java内存模型)这个内存模型搞起来还是有点弯弯绕,一点点的整理吧。JMM的目的就是保证共享变量在多线程环境下的原子性,可见性,与有序性而定义的一组规范。这些问题的出现都跟CPU的设计有关系,CPU是计算机的运算核心所有的操作或者说指令都是在CPU里面运行的,而且CPU的运行......
  • 学生java学习路程-5
    ok,到了一周一次的总结时刻,我大致会有下面几个方面的论述:1.这周学习了Java的那些东西2.这周遇到了什么苦难3.未来是否需要改进方法等几个方面阐述我的学习路程。抽象类abstract接口interface,定义时加入注释解释接口含义String类String是不可变字符串,所有的替换,截取子字符串,......
  • Java SE核心技术——9抽象类
    面向对象编程(Object-OrientedProgramming,简称OOP)和面向过程编程(Procedure-OrientedProgramming)是两种不同的编程范式,它们在设计和实现软件时采用了不同的方法和哲学。一、面向对象编程核心概念:面向对象编程的核心是"对象",对象可以包含数据(属性)和代码(方法)。万物皆对象。封......
  • Caused by: java.lang.ClassNotFoundException:org.apache.hadoop.hive.conf.hiveConf
    在sqoop执行create-hive-table时候报错这样,java.io.IOException:原因是缺失jar包,可能是sqoop conf文件的sqoop-env-template.sh里面没有配置相关的hadoop hivezookeeper 的相关环境变量进入sqoop的conf文件下找到sqoop-env-template.sh进入添加相关得到环境变量(注意......
  • Flink 开发语言选择 —— Java vs Scala
    引言ApacheFlink是一个用于处理无界和有界数据流的开源分布式计算框架。随着Flink的日益流行,越来越多的开发者开始考虑使用哪种编程语言来进行Flink应用程序的开发。本文将探讨在Flink中使用Java和Scala的优缺点,并帮助你做出更明智的选择。1.背景简介Flink支......
  • 搞定Java ArrayList,就看这一篇!
    大家好,我是小欧!今天我们来聊聊Java中的ArrayList。作为一个Java新手,初次接触ArrayList可能会觉得有点懵,不过不用担心,这篇文章会带你从零开始一步步搞定ArrayList。我们会从基础概念开始,然后逐步深入,最后通过几个实际案例来巩固学习成果。ArrayList是什么?简单来说,ArrayLis......
  • 单个或两个及以上java安装与环境变量配置
    目录java下载地址:1.安装java1.1安装程序1.2选择安装路径1.3等待安装2.首先,进入环境变量2.1找到设置(第一个win11,第二个win10)2.2进入到系统高级系统设置(第一个win11,第二个win10)2.3点击环境变量2.4新建与添加2.5添加CLASSPATH2.6添加JAVA_HOME2.7找到path,编辑......
  • Java数据类型
    目录数据类型基本数据类型引用类型数据类型的转换数据类型基本数据类型Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型1.byte:byte数据类型是8位、有符号的,以二进制补码表示的整数;最小值是-128zhi(-2^7);最大值是127(2^7-1);默认......
  • JavaScript 中的闭包和事件委托
    闭包(Closures)闭包是JavaScript中一个非常强大的特性,它允许函数访问其外部作用域中的变量,即使在该函数被调用时,外部作用域已经执行完毕。闭包可以帮助我们实现数据的私有化、封装和模块化,使代码更简洁、易读和可维护。闭包的定义简单来说,闭包是指有权访问另一个函数作用域......
  • Java计算机毕业设计教育培训系统设计与实现(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在信息化高速发展的今天,教育领域正经历着前所未有的变革。传统的教学模式逐渐显露出其局限性,如资源分配不均、互动性不足、学习效率不高等问题日益凸......