Java 语言基础练习题

news2024/11/17 23:56:51

Java 语言基础练习题

Key Point
●包的基本语法
●Java 语言中的标识符,命名规范
●八种基本类型
●基本操作符
●if 语句和switch 语句

练习

1.(标识符命名)下面几个变量中,那些是对的?那些是错的?错的请说明理由

Java中的命名规则:
字母 数字和美元和_组成
数字不能开头
区分大小写
任意长度
关键字不可以
遵循大驼峰。每个单词的首字母都是需要大写的
小驼峰:除了第一个单词其余的单词的首字母都是需要大写的

A. ILoveJava 正确。驼峰式的,首字母大写。

B. $20 正确。$能开头。

C. learn@java 错误。出现了特殊的字符@

D. antony.lee 错误。出现了特殊的字符.

E. Hello_World 可以。但是不太符合命名的规范

F. 2tigers 错误。数字不能开头。

2.(Java 程序的编译与运行)假设有如下程序:

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

问:

1)假设这个代码存在hello.java 文件中,那这个程序能够编译通过?为什么?如果编译不通过,应该如何改进?
解答:不能。文件名必须和类名是相同的,将文件名改为HelloWorld.java或者是把类名hello。

2)假设这个.java 文件放在C:\javafile\目录下,CLASSPATH=.,则生成
的.class文件应该放在什么目录下?如何运行?
解答:CLASSPATH=. 表示的是当前的目录。生成的class文件会保存到C:\javafile\目录下。因为classpath指定的是类文件查找的路径所以要运行这个成功需要按照下面的步骤进行运行。

  1. 打开Terminal争端
  2. 进入到C:\javafile\目录下
  3. 使用javac HelloWorld.java 命令,此时会生成一个HelloWorld.class文件保存到当前的目录下。
  4. 编译完成之后使用java HelloWorld可以运行当前的程序,在控制台上会输出 Hello World 的内容。

3.(if 语句)读入一个整数,判断其是奇数还是偶数

%运算出的结果和0之间的关系

public class Test3 {

        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            System.out.print("请输入一个整数:");
            int number = scanner.nextInt();

            if (number % 2 == 0) {
                System.out.println(number + " 是偶数。");
            } else {
                System.out.println(number + " 是奇数。");
            }
        }

}

4.(操作符)有如下代码:

自增运算
int a = 5;
int b = (a++) + (--a) +(++a);
问执行完之后,b 的结果是多少?
解答:
b=5+...+... 此时a=6
b=5+5+... 此时a=5
b=5+5+6 此时a=6
最后
b=5+5+6=16

5.(基本类型的运算)

一家商场在举行打折促销,所有商品都进行8 折优惠。一位程序员把这个逻辑写成:
short price = ...; // 先计算出原价
short realPrice = price * 8 / 10; //再计算出打折之后的价格
问:这段代码是否正确?如果正确,假设price 为100,那计算之后的
realPrice值为多少?如果不正确,应该怎么改正?

解答:
short的取值范围-32768 到 32767
realPrice的返回值应该采用int的类型,因为Java中的默认的运算是int
使用short还有可能导致溢出

 

 short price = 100; // 先计算出原价
        int realPrice = price * 8 / 10; //再计算出打折之后的价格
        System.out.println(realPrice);

6. (操作符)请说明>>与>>>之间的区别。

解答:
都是右移操作但是 >> 是有符号右移操作符,在右移时保留符号位。>>> 是无符号右移操作符,不考虑符号位,用零填充左侧空位。
两个> 右移的时候采用的是符号位进行填充的。跟原先的有的符号是相关的。
三个> 右移的时候采用的是0进行填充的不管原先是什么符号的

 

7. (操作符)有如下代码:

 a = (a>b)?a:b;
 请问这段代码完成了什么功能。
解答:三目运算符比较。
当a>b为true 返回a
反之返回b

8. (if 语句)

读入一个整数,表示一个人的年龄。如果小于6 岁,则输出“儿 童”,
 6 岁到13 岁,输出“少儿”;14 岁到18 岁,输出“青少年”;18 岁到35 岁,
 输出“青年”;35 岁到50 岁,输出“中年”;50 岁以上输出“中老年”。

解答:

public class Test7 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入年龄:");
        int age = scanner.nextInt();

        if (age < 6) {
            System.out.println("儿童");
        } else if (age >= 6 && age <= 13) {
            System.out.println("少儿");
        } else if (age >= 14 && age <= 18) {
            System.out.println("青少年");
        } else if (age > 18 && age <= 35) {
            System.out.println("青年");
        } else if (age > 35 && age <= 50) {
            System.out.println("中年");
        } else {
            System.out.println("中老年");
        }
    }
}

 

9. (switch 语句)

读入一个整数,如果是1~5 之间,则分别输出5 个福娃的名字,否则输出“北京欢迎你”。

public class Test10 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入一个整数!");
        int a=scanner.nextInt();
        switch (a){
            case 1:
                System.out.println("Beibei");
                break;
            case 2:
                System.out.println("Jingjing");
                break;
            case 3:
                System.out.println("Huanhuan");
                break;
            case 4:
                System.out.println("Yingying");
                break;
            case 5:
                System.out.println("Nini");
                break;
            default:
                System.out.println("北京欢迎你");
        }
        scanner.close();
    }
}

 

10. (if 语句,赋值操作)

读入三个整数,输出这三个整数中最大的一个。

解答:

public class Test10 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("依次输入三个整数");
        int num[]=new int[3];
        for (int i = 0; i < 3; i++) {
            num[i]=scanner.nextInt();
        }
        System.out.println("最大的数为");
        if (num[0]>=num[1]){
            if (num[0]>=num[2]){
                System.out.println("max"+num[0]);
            }
            else {
                System.out.println("max"+num[2]);
            }
        }
       else {
            if (num[1]>=num[2]){
                System.out.println("max"+num[1]);
            }
            else {
                System.out.println("max"+num[2]);
            }
        }

        scanner.close();
    }
}

效果图:

 

11. (if 语句) 判断是不是闰年

*读入一个表示年份的整数,判断这一年是否是闰年。如何判断 一个年份是否是闰年:

  1. 如果这个年份能够被4 整除,且不能被100 整除,则这一年是闰年。例
    如,1996 年是闰年,而相应的,1993 年就不是闰年。
  2. 如果这个年份能够被100 整除,则这个数必须要能被400 整除,才是闰
    年。例如,2000 年是闰年,1900 年不是闰年。
public class Test11 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入一个年份");
        int year=scanner.nextInt();

        boolean isLeapYear = false;//是不是闰年

        if ((year % 4 == 0&&year % 100 != 0)
                ||(year % 100 == 0&&year % 400 == 0)) {
            isLeapYear = true;
        }

        if (isLeapYear) {
            System.out.println(year + " 是闰年");
        } else {
            System.out.println(year + " 不是闰年");
        }
        scanner.close();
    }
}

效果图:

 

12. (switch 语句)*完成一个简单的计算器程序。程序要求如下:

  1. 读入两个整数
  2. 提示用户选择对这两个整数的操作,即输出
    1 : +
    2 : -
    3 : *
    4 : /
    请输入您的选择:
    读入用户的选择,输出运算结果。
public class Test12 {
    public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);

            System.out.print("请输入第一个整数:");
            int number1 = scanner.nextInt();

            System.out.print("请输入第二个整数:");
            int number2 = scanner.nextInt();

            System.out.println("请选择对这两个整数的操作:"+
                    "\n1:+"+
                    "\n2:-"+
                    "\n3:*"+
                    "\n4:/");
            System.out.print("请输入您的选择:");
            int choice = scanner.nextInt();

            double result = 0;

            switch (choice) {
                case 1:
                    result = number1 + number2;
                    break;
                case 2:
                    result = number1 - number2;
                    break;
                case 3:
                    result = number1 * number2;
                    break;
                case 4:
                    if (number2 != 0) {
                        result = (double) number1 / number2;
                    } else {
                        System.out.println("除数不能为0");
                        return;
                    }
                    break;
                default:
                    System.out.println("无效的选择");
                    return;
            }

            System.out.println("运算结果:" + result);
        }
}

效果图:

 

13. (if 语句)*托运计费问题:

  • 当货物重量小于20公斤的时候,收费5元,
  • 大于20 公斤小于100 公斤的时候超出20 公斤的部分按每0.2 元每公斤计费,
  • 如果超出100 公斤的时候,超出的部分按照每公斤0.15 元计算。
  • 读入货物的重量,输出计算之后货物的运费。

解答:

public class Test13 {
    public static void main(String[] args) {
      System.out.println("请输入货物的重量(单位:公斤):");
        Scanner scanner
                = new Scanner(System.in);
        //重量
        double weight = scanner.nextDouble();

        double fee=0;
        //判断
        if (weight<=20){
            fee=5;
        }
        else if (weight<=100){
            fee=5+(100-20)*0.2;
        }
        else {
            fee=5+(100-20)*0.2+(weight-100)*0.15;
        }

        System.out.println("货物的运费为:"+fee+"元");
    }
}

效果图:

 

14. (if 语句)*中国的个税计算方法:

应税所得为税前收入扣除2000 元(起征点),然后超出部分,按照以下税率
收税:
500 5%
500-2000 10%
2000-5000 15%
5000-20000 20%
20000-40000 25%
40000-60000 30%
60000-80000 35%
80000-100000 40%
100000 - ? 45%
例:若月收入15000,则应税所得为15000-2000=13000;总的个人所得税为
13000-5000*20% + 5000-2000*15% + 2000-500*10% + 500*5%= 2225
要求:读入一个整数,表示税前收入,输出应当缴纳的个人所得税和税后实
际收入。

解答:

public class Test14 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入税前收入:");
        double income = scanner.nextDouble();

        double threshold = 2000; // 起征点
        double taxableIncome = income - threshold; // 应税所得

        double tax = 0; // 个人所得税

        if (taxableIncome <= 0) {
            tax = 0;
        } else if (taxableIncome <= 500) {
            tax = taxableIncome * 0.05;
        } else if (taxableIncome <= 2000) {
            tax = (taxableIncome - 500) * 0.1 + 500 * 0.05;
        } else if (taxableIncome <= 5000) {
            tax = (taxableIncome - 2000) * 0.15 + (2000 - 500) * 0.1 + 500 * 0.05;
        } else if (taxableIncome <= 20000) {
            tax = (taxableIncome - 5000) * 0.2 + (5000 - 2000) * 0.15 + (2000 - 500) * 0.1 + 500 * 0.05;
        } else if (taxableIncome <= 40000) {
            tax = (taxableIncome - 20000) * 0.25 + (20000 - 5000) * 0.2 + (5000 - 2000) * 0.15 + (2000 - 500) * 0.1 + 500 * 0.05;
        } else if (taxableIncome <= 60000) {
            tax = (taxableIncome - 40000) * 0.3 + (40000 - 20000) * 0.25 + (20000 - 5000) * 0.2 + (5000 - 2000) * 0.15 + (2000 - 500) * 0.1 + 500 * 0.05;
        } else if (taxableIncome <= 80000) {
            tax = (taxableIncome - 60000) * 0.35 + (60000 - 40000) * 0.3 + (40000 - 20000) * 0.25 + (20000 - 5000) * 0.2 + (5000 - 2000) * 0.15 + (2000 - 500) * 0.1 + 500 * 0.05;
        } else if (taxableIncome <= 100000) {
            tax = (taxableIncome - 80000) * 0.4 + (80000 - 60000) * 0.35 + (60000 - 40000) * 0.3 + (40000 - 20000) * 0.25 + (20000 - 5000) * 0.2 + (5000 - 2000) * 0.15 + (2000 - 500) * 0.1 + 500 * 0.05;
        } else {
            tax = (taxableIncome - 100000) * 0.45 + (100000 - 80000) * 0.4 + (80000 - 60000) * 0.35 + (60000 - 40000) * 0.3 + (40000 - 20000) * 0.25 + (20000 - 5000) * 0.2 + (5000 - 2000) * 0.15 + (2000 - 500) * 0.1 + 500 * 0.05;
        }

        double afterTaxIncome = income - tax; // 税后实际收入

        System.out.println("个人所得税:" + tax + " 元");
        System.out.println("税后实际收入:" + afterTaxIncome + " 元");
    }


}

效果:

 

15. (if 语句,操作符)**读入一个三位数,计算其各位数字之和。

例如:123 各位数字之和为6

解答:

public class Test15 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);

            System.out.print("请输入一个三位数:");
            int number = scanner.nextInt();

            int digit1 = number / 100; // 百位数字
            int digit2 = (number / 10) % 10; // 十位数字
            int digit3 = number % 10; // 个位数字

            int sum = digit1 + digit2 + digit3; // 各位数字之和

            System.out.println("各位数字之和:" + sum);
        }
}

效果:

 

16. (if 语句)**读入三个整数,把这三个整数按照由大到小的顺序输出。

解答:

public class Test16 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);

            System.out.print("请输入三个整数,用空格分隔:");
            int num1 = scanner.nextInt();
            int num2 = scanner.nextInt();
            int num3 = scanner.nextInt();

            if (num1 >= num2 && num1 >= num3) {
                if (num2 >= num3) {
                    System.out.println(num1 + " " + num2 + " " + num3);
                } else {
                    System.out.println(num1 + " " + num3 + " " + num2);
                }
            } else if (num2 >= num1 && num2 >= num3) {
                if (num1 >= num3) {
                    System.out.println(num2 + " " + num1 + " " + num3);
                } else {
                    System.out.println(num2 + " " + num3 + " " + num1);
                }
            } else {
                if (num1 >= num2) {
                    System.out.println(num3 + " " + num1 + " " + num2);
                } else {
                    System.out.println(num3 + " " + num2 + " " + num1);
                }
            }
        }
}

效果:

 

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

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

相关文章

C++学习 程序控制结构

程序控制结构 以某种顺序执行的一系列动作&#xff0c;用于解决某个问题。包括 顺序结构、选择结构、循环结构。 顺序结构 按照顺序正常执行。前几篇文章的代码都是顺序结构的体现。 选择结构 执行满足条件的语句。 if 结构&#xff1a;if (表达式){} 表达式为真则执行&…

Linux历史及环境搭建(VMware搭建CentOS7环境)

Linux历史及环境搭建 1.Linux历史1.1 UNIX发展的历史1.2 Linux发展历史1.2.1 开源1.2.2 官网1.2.3 发行版本 2.VMware配置CentOS7环境2.1 CentOS下载2.2 配置环境2.3 切换国内阿里源2.4 无图形化界面开机 结语 1.Linux历史 在这里简要介绍Linux的发展史。要说 Linux&#xff0…

机器学习李宏毅学习笔记36

文章目录 前言Meta learning应用总结 前言 Meta learning&#xff08;二&#xff09;应用方向 Meta learning应用 回顾gradient descen Θ0&#xff08;initial的参数&#xff09;是可以训练的&#xff0c;一个好的初始化参数和普通的是有很大差距的。可以通过一些训练的任务…

Python通过私信消息提取博主的赠书活动地址

文章目录 前言背景设计开发1.引入模块2.获取私信内容3.根据文本提取url的方法4.获取包含‘书’的url5.程序入口 效果总结最后 前言 博主空空star主页空空star的主页 大家好&#xff0c;我是空空star&#xff0c;本篇给大家分享一下《通过私信消息提取博主的赠书活动地址》。 背…

通用策略04丨ORB魔改框架+自适应动量过滤模板

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 大家好&#xff0c;今天我们分享2023年度第4期通用策略——ORB魔改框架自适应动量过滤模板。 本期策略是2023年通用系列第4篇。本期主要内容有对ORB原版的逻辑魔改&#xff0c;其次我们将跨日周期均线过…

现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?

停机迁移方案 最 low 的方案&#xff0c;就是很简单&#xff0c;大家伙儿凌晨 12 点开始运维&#xff0c;网站或者 app 挂 个公告&#xff0c;说 0 点到早上 6 点进行运维&#xff0c;无法访问。 接着到 0 点停机&#xff0c;系统停掉&#xff0c;没有流量写入了&#xff0c;…

设计一个高流量高并发的系统需要关注哪些点

1、设计原则 1.1、系统设计原则 在设计一个系统之前&#xff0c;我们先要有一个统一且清晰的认知&#xff1a;不要想着一下就能设计出完美的系统&#xff0c;好的系统是迭代出来的。不要复杂化&#xff0c;要先解决核心问题。但是要有先行的规划&#xff0c;对现有的问题有方…

字符与代表数据的转化

目的 在与设备交互当中&#xff0c;大都以十六进制的数进行交互。 而显示给用户时&#xff0c;是以字符的形式显示。 这中间就需要字符与其所代表的数值的转化&#xff0c;比如&#xff1a; ‘0F’---->0x0F 这怎么实现呢&#xff0c;一个是字符&#xff0c;另一个是数字&a…

Apache seatunnel集群部署

跳转到安装目录 cd /opt/soft/seatunnel 1.设置环境变量 export SEATUNNEL_HOME/opt/soft/seatunnel export PATH$PATH:$SEATUNNEL_HOME/bin 启动服务端 ./bin/seatunnel-cluster.sh -d 启动客户端 ./bin/seatunnel.sh --config ./config/kafka2gbase_udf.conf 这样就启…

Vue3 数字滚动插件 vue-countup-v3

文章目录 介绍效果安装属性事件配置项完整样例 介绍 vue-countup-v3 插件是一个基于 Vue3 的数字动画插件&#xff0c;用于在网站或应用程序中创建带有数字动画效果的计数器。通过该插件&#xff0c;我们可以轻松地实现数字的递增或递减动画&#xff0c;并自定义其样式和动画效…

软件测试职业发展的7个阶段,哪个都吃香!

首先谈谈我在软件测试行业的亲身经历&#xff1a;我的一位同事曾经很认真地问过我一个问题&#xff0c;他说他现在从事软件测试工作已经4年了&#xff0c;但是他不知道现在的工作和自己在工作3年时有什么不同&#xff0c;他想旁观者清&#xff0c;也许我能回答他的问题。此外他…

手写vue-diff算法(一)

Vue初始化流程 1.Vue流程图 Vue流程图&#xff1a; Vue的初始化流程&#xff0c;默认会创建一个Vue实例&#xff0c;执行初始化、挂载、模板编译操作&#xff0c;模板被编译成为render函数&#xff1b;在render函数初始化时会执行取值操作&#xff0c;从而进入getter方法对当…

【科研入门】会议、期刊、出版社、文献数据库、引文数据库、SCI分区、影响因子等基础科研必备知识

大家好&#xff0c;我是洲洲&#xff0c;欢迎关注&#xff0c;一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我&#xff01; 本文目录 一、会议与期刊二、如何辨别是否…

【UE5 Cesium】07-Cesium for Unreal 从一个地点飞行到另一个地点(下)

UE版本&#xff1a;5.1 介绍 本文以在基督城&#xff08;新西兰&#xff09;和悉尼&#xff08;澳大利亚&#xff09;这两个城市间为例&#xff0c;在上一篇文章&#xff08;【UE5 Cesium】06-Cesium for Unreal 从一个地点飞行到另一个地点&#xff08;上&#xff09;&#…

vant-weapp源码解析---Tab标签页

这个标签栏&#xff0c;属于一个很常见的组件&#xff0c;一般我不用这个组件&#xff0c;自己手写一个scroll-view以及样式&#xff0c;更加轻便。但是我写的最简单的标签页没有滚动效果&#xff0c;以及选中标签动画效果。因此根据标签栏滚动学习下&#xff0c;并且自己手写一…

动态规划的入门

https://www.bilibili.com/video/BV13Q4y197Wg/ 动态规划解题步骤 —— carl 动态规划&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;简称DP&#xff0c;如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由…

Postman 最被低估的功能,自动化接口测试效率简直无敌!

目录 该篇文章针对已经掌握 Postman 基本用法的读者&#xff0c;即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 接口结果判断 功能区 脚本相关 代码模板 集合(批量)测试 批量执行 变化的参数数据 请求依赖问题 接口执行顺序 数据传递 解决依…

系统出错。发生系统错误 1067。进程意外终止。

问题描述 使用管理员cmd&#xff0c;任务管理器均无法启动mysql。 报错提示信息&#xff1a;系统出错。发生系统错误 1067。进程意外终止。 错误排查 1.检查3306端口是否被占用 在cmd输入netstat -aon|findstr 3306&#xff0c;结果如下&#xff1a; 如果你发现是端口被占用…

OpenAI 又赢麻了谷歌 DeepMind 创始人刚称 Gemini 能碾压 GPT-4

整理 | 褚杏娟&#xff0c;核子可乐 谷歌在上个月的开发者大会上公布了一系列 AI 新项目&#xff0c;当时首次亮相的 Gemini 曾受到不少嘲讽。但近日&#xff0c;DeepMind 联合创始人兼 CEO Demis Hassabis 自曝&#xff0c;工程师们正在使用 AlphaGo 的技术来开发 Gemini&…

Java框架之spring 的 AOP 和 IOC

写在前面 本文一起看下spring aop 和 IOC相关的内容。 1&#xff1a;spring bean核心原理 1.1&#xff1a;spring bean的生命周期 spring bean生命周期&#xff0c;参考下图&#xff1a; 我们来一步步的看下。 1 其中1构造函数就是执行类的构造函数完成对象的创建&#x…