基础知识小练习合集:

1.说明基本数据类型变量之间强制类型转换的使用规则和强转可能出现的问题。

(1)使用强制转换符;
(2)强制类型转换,可能会导致精度损失(降低或溢出)
容量小的数据类型变量→容量大的数据类型变量,不会丢失原有信息。
容量大的数据类型变量→容量小的数据类型变量,可能会丢失原有信息。

2.判断是否能通过编译

1)short s = 5; s = s-2; ?不可以, 计算时会将S - 2中的s 和 2 都是int类型,但是s 是 short类型 ,所以类型不相符。
2)byte b = 3; b = b + 4; ?
不可以,和(1)同理,b+4中的b在进行+操作时会被提升成为int类型,但是外面的b是byte类型,类型不相符。
b = (byte)(b+4); ?
可以 和上面不同的是,b+4是int类型,用(byte)将b+4强制转换成了byte类型。
3)char c = ‘a’; int i = 5; float d =0.314F; double result = c+i+d; ?
可以,char c =’a’ 用ascⅡ码得到 97 c+i==97+5==102 d 是float类型 最后结果是double类型,可以计算,精度缺失。
4)byte b = 5; short s = 3; short t = s + b; ?
不可以,同理,s+b在计算的时提升成int类型,类型不符。

3.比较 + 与 +=

short s1 = 1; s1 = s1 + 1;有什么错?
S1+1 在+运算时被提升为int类型, s1 是 short类型;
short s1 = 1; s1 += 1;有什么错
没错,+= java会把它强制转换成s1的数据类型。

4. 岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断

public static void main(String[]args){Scanner sc = new Scanner(System.in);System.out.println("请输入成绩:");int scort = sc.nextInt();if(scort == 100 ){System.out.println("小鹏获得一辆BMW");}else if (scort>80 && scort<=99){System.out.println("获得iphone xs max");}else if (scort>=60 && scort<=80){System.out.println("一个ipad");}else if(scort<60&&scort>=0){System.out.println("什么奖励都没有");}else{System.out.println("输入的数据有误");}}

5. 编写程序,声明2个int型变量并赋值。判断两数之和,如果大于等
于50,打印“hello world!” 其他情况打印 “hello China!”

public static void main(String[]args){Scanner sc=new Scanner(System.in);System.out.print("请输入第一个数:");int a = sc.nextInt();System.out.print("请输入第二个数:");int b = sc.nextInt();if((a+b)>=50){System.out.println("hello world!");}else{System.out.println("hello China!");}}

6. 编写程序,声明2个double型变量并赋值。判断第一个数大于10.0, 且第2个数小于20.0,打印两数之和。否则,打印两数的乘积。

public static void main(String[]args){Scanner sc = new Scanner(System.in);System.out.println("请输入两个小数:");double a = sc.nextDouble();double b = sc.nextDouble();if (a > 10.0 && b < 20.0){System.out.println(a+b);}else{System.out.println(a*b);}}

7. 编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。

public static void main(String[]args){Scanner sc = new Scanner(System.in);System.out.print("请输入第一个整数:");int num1 = sc.nextInt();System.out.print("请输入第二个整数:");int num2 = sc.nextInt();System.out.print("请输入第三个整数:");int num3 = sc.nextInt();if(num1 > num2){if(num3>num1){System.out.println(num2 + "、"+num1 + "、"+num3);}else if(num2 > num3){System.out.println(num3 + "、"+num2 + "、"+num1);}else{System.out.println(num2 + "、"+num3 + "、"+num1);}}else{//num1<num2if(num3>num2 ){System.out.println(num1 + "、"+num2 + "、"+num3);}else if(num3<num1){System.out.println(num3 + "、"+num1 + "、"+num2);}else {System.out.println(num1 + "、"+num3 + "、"+num2);}}}

8. 我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每 一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗 相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。

​ 编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人 类的年龄。如果用户输入负数,请显示一个提示信息。

public static void main(String[]args){Scanner sc = new Scanner(System.in);System.out.println("请输入狗狗年龄:");double Dage = sc.nextDouble();double Mage = 0;if (Dage > 0 && Dage<=2){Mage = Dage *10.5;System.out.println("相当于人类:"+Mage+"岁");}else if(Dage > 2){Mage = 21 + ((Dage-2)*4);System.out.println("相当于人类:"+Mage+"岁");}else{System.out.println("请不要输入负数");}}

9. 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出
一定的条件:高:180cm以上;富:财富1千万以上;帅:是。(注意:不用管单位)

如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,将就过日子。”
如果三个条件都不满足,则:“不嫁!

public static void main(String[]args){Scanner sc = new Scanner(System.in);System.out.println("请说出你的身高:(cm)");double high = sc.nextDouble();System.out.println("你有多少钱:(万)");double mon = sc.nextDouble();System.out.println("你是不是帅哥?(true/false)");Boolean face = sc.nextBoolean(); if( high >= 180 &&  mon >=1000 && face ){System.out.println("我一定要嫁给他!!!");}else if( high >= 180 || mon >= 1000 || face ){System.out.println("嫁吧,将就过日子。");}else {System.out.println("不嫁");}}

10.模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果。

要求:
​键盘录入三个整数,其中前两个整数代表参加运算的数据,第三个整数为要进行的运算(1:表示加法运算,2:表示减法运算,3:表示乘法运算,4:表示除法运算),演示效果如下:

请输入第一个整数: 30
​ 请输入第二个整数: 40
​ 请输入您要进行的运算(1:表示加法,2:表示减法,3:表示乘法,4:表示除法): 1
​ 控制台输出:30+40=70

public static void main(String[] args) {// 2.创建键盘录入对象Scanner sc = new Scanner(System.in);// 3.提示需要输入的数据,并调用方法获取输入的数据System.out.println("请输入第一个整数:");int num1 = sc.nextInt();System.out.println("请输入第二个整数:");int num2 = sc.nextInt();System.out.println("请输入您要进行的运算(1:表示加法,2:表示减法,3:表示乘法,4:表示除法)");int type = sc.nextInt();// 4.使用switch语句判断计算类型,并输出相应的结果switch (type) {case 1:System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));break;case 2:System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));break;case 3:System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));break;case 4:System.out.println(num1 + " / " + num2 + " = " + (num1 * 1.0 / num2));break;default:System.out.println("您输入的运算类别有误");break;}}

11. 从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准: 1)可以被4整除,但不可被100整除 或 2)可以被400整除

public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入年份:");int year = sc.nextInt();System.out.println("请输入月份:");int month = sc.nextInt();System.out.println("请输入日期:");int day = sc.nextInt();int sumDays = 0;switch (month){case 12:if(day > 30){System.out.println("天数过大请重新输入:");day = sc.nextInt();}else{sumDays += 30;}case 11:if(day > 31){System.out.println("天数过大请重新输入:");day = sc.nextInt();}else{sumDays += 31;}case 10:if(day > 30){System.out.println("天数过大请重新输入:");day = sc.nextInt();}else{sumDays += 30;}case 9:if(day > 31){System.out.println("天数过大请重新输入:");day = sc.nextInt();}else{sumDays += 31;}case 8:sumDays += 31;case 7:sumDays += 30;case 6:sumDays += 31;case 5:sumDays += 30;case 4:sumDays += 31;case 3:if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){sumDays += 29;}else {sumDays += 28;}case 2:sumDays += 31;case 1:sumDays += day;break;}System.out.println("这是"+year+"年的第 " + sumDays + " 天!");}

12.编写一个程序,为一个给定的年份找出其对应的中国生肖。中国的生肖基于12年一个周期, 每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey0、 rooster1、dog2、pig3。 提示:2019年:猪 2019 % 12 == 3

public static void main(String[]args){Scanner sc= new Scanner(System.in);System.out.println("请输入年份:");int year = sc.nextInt();switch (year%12){case 0:System.out.println("monkey");break;case 1:System.out.println("rooster");break;case 2:System.out.println("dog");break;case 3:System.out.println("pig");break;case 4:System.out.println("rat");break;case 5:System.out.println("ox");break;case 6:System.out.println("tiger");break;case 7:System.out.println("rabbit");break;case 8:System.out.println("dragon");break;case 9:System.out.println("snake");break;case 10:System.out.println("horse");break;case 11:System.out.println("sheep");break;}}

13.下面是一段程序,目的是输出10个=,但是不小心代码写错了,现在需要修改代码,使得程序完成功能,但是只能“增加”或“修改”其中“一个”字符,很明显,将i–改为i++,可以完成功能,但是需要修改“两个”字符,所以并不是一个正确的答案?

public static void main(String[] args) {int n=10;for (int i = 0; i < n; i--) {System.out.println("=");}}
//-----------------------
public static void main(String[] args) {int n=10;for (int i = 0; -i <  n; i--) {System.out.println("=");}}

14. 一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3。编程 找出1000以内的所有完数。(因子:除去这个数本身的其它约数)

 public static void main(String[]args){for(int i = 1;i<1000;i++) {int num = 0;for(int j = 1;j<i;j++) {if(i%j == 0) {num += j;}}if(i == num) {System.out.println(i+"是完数");}}}

15.输入高度,输出直角三角形。如:输入5, 将输出如下图形

 public static void main(String[] args){Scanner sc=new Scanner(System.in);System.out.println("请输入一个数:");int n = sc.nextInt();int i,j ;for(i=1;i<=n;i++){for(j=1;j<=i;j++){System.out.print("#");}System.out.println();}
}

16.输入高度,输出倒直角三角形。如:输入6, 将输出如下图形

******
*****
****
***
**
*
public static void main(String[] args){Scanner sc=new Scanner(System.in);System.out.println("请输入一个数:");int n = sc.nextInt();int i,j ;for(i=1;i<=n;i++){for(j=n;j>=i;j--){System.out.print("*");}System.out.println();}
}

17. 执行如下代码后,i的值是多少?

public static void main(String[] args) {int i=10;while(i>0){i = i +1;if(i==10){break;}}System.out.println("i=" + i);}

-2147483648 int最大值溢出进行循环

18.打印自然数的个数

1)打印1~100之间 6的倍数的个数
2)求出1~100之间,既是3又是7的倍数的自然数出现的次数?

public static void main(String[] args) {int i,j = 0; for(i = 1; i <= 100; i++) {if (i % 3 == 0 && i % 7 == 0) {System.out.println(i);j++;}}System.out.println("次数为:" + j); }

19.打印如下的图形:菱形1

public static void main(String[] args){int i,j;for (i = 0; i <= 5 ; i++) {for (j=0;j<5-i;j++) {System.out.print(" ");}for (j=0;j<2*i-1;j++) {System.out.print("*");}System.out.println();}for(i=1;i<5;i++){for(j=0;j<i;j++){System.out.print(" ");}for(j=0;j<2*(5-i)-1;j++){System.out.print("*");}System.out.println();}
}

20.创建一个char类型的36个元素的数组,前26个元素放置’A’-‘Z’, 后10个元素放置’0’-‘9’。

使用for循环访问所有元素并打印出来。
提示:char类型数据运算 ‘A’+1 -> ‘B’,‘0’+1 -> ‘1’

public static void main(String[] args) {char[] a = new char[36];for (int i = 0; i < 26 ; i++) {a[i] = (char)('A'+i);}//字母部分for (int i = 26; i <36; i++) {a[i] = (char) ('0'+i-26);}//数字部分for (int i = 0; i < 36; i++) {System.out.print(a[i]+" ");}}

21.输入数组{4,6,7,8,1,2,5},最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

 public static void main(String[] args) {int[] a = {4,6,7,8,1,2,5};int max = a[0] ;int min = a[0] ;for (int j = 0;j < a.length;j++){if (a [j] > max ){max = a[j];}//最大值else if(a[j]<min){min=a[j];}//最小值}for (int i = 0; i < a.length ; i++) {if (a[i] == max){a[i] =a [0];}}//找到第几个是最大值将第一位的值赋给最大数位;a[0] = max;//把最大数赋给第一位;for (int i = 0; i<a.length;i++){if (a[i] == min){a[i] = a[6];}}a[6] = min;for (int i = 0;i < a.length;i++){System.out.print(a[i]+" ");}}

22.现在有如下的一个数组:
int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为:
int[] newArr = {1,3,4,5,6,6,5,4,7,6,7,5} ;

public static void main(String[] args) {int[] oldArr = {1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} ;int newArr[]= new int[12];int j = 0;for(int i=0;i<oldArr.length;i++) {if(oldArr[i]!=0) {newArr[j]=oldArr[i];j++;}}for(j=0;j<newArr.length;j++) {System.out.print(newArr[j]+"  ");}}

23.现在给出两个数组:
数组a:“1,7,9,11,13,15,17,19”
数组b:“2,4,6,8,10”
两个数组合并为数组c。

 public static void main(String[] args) {int[] a = {1, 7, 9, 11, 13, 15, 17, 19};//要确认数组的数据类型一致int[] b = {2, 4, 6, 8, 10};int[] c = new int[a.length + b.length];//为合并后的数组开空间 确定长度。for (int i = 0; i < a.length; i++) {c[i] = a[i];}//把第一个数组数据放入新数组for (int i = 0; i < b.length; i++) {c[i + a.length] = b[i];}//把第二个数组数据放入新数组System.out.println(Arrays.toString(c));//这个方法是用来将数组转换成String类型输出的,传入的参数可以是boolean,byte,char,double,float,int,long,short类型的数组}

24.B哥去参加青年歌手大奖赛,有10个评委打分,(去掉一个最高一个最低)求平均分是多少?
评委打分:99,97,96,95,94,92,91,90,88,100

public static void main(String[] args) {int [] a = {99,97,96,95,94,92,91,90,88,100};int max = a[0];int min = a[0];int count=0;int aveg = 0;for(int i=0;i<a.length;i++){count +=a[i];if (a[i]>max){max = a[i];}//找到最大数for (int j=0;j<a.length;j++){if (a[i]<min){min = a[j];}}//找到最小数}aveg = (count - max -min)/8;//减去最大最小书求平均System.out.println("分数为:"+aveg);}

25.给定一个整型数组,数组成员10个,求该数组中第二大的数的下标

数据如图:{1, 2, 3, 4, 5, 6, 7, 8, 9, 0};--0,1,2,3,4,5,6,7,8,9
 public static void main(String[] args) {int []a= {1,2,3,4,5,6,7,8,9,0};//最大数int max=a[0];int maxsum=0;//第二大数int second=0;int secondsum=0;for (int i = 0; i < a.length; i++) {if(a[i]>max) {second=max;secondsum=maxsum;//当有数比最大数大的时候 之前的最大数就是第二大数max=a[i];maxsum=i;}}System.out.println("第二大数是"+second+",下标是"+secondsum);}

26.求一个3*3矩阵对角线元素之 和,要求矩形里面的值为随机赋值

 public static void main(String[] args) {int a[][]=new int[3][3];Random r = new Random();int count1=0;int count2=0;int count=0;for (int i=0;i<3;i++){for(int j=0;j<3;j++){a[i][j] = r.nextInt(10);System.out.println(a[i][j]);if (i==j){count1 += a[i][j];}else if(i+j==2){count2 += a[i][j];}}}System.out.println("主对角线之和为:"+count1+"副对角线之和为:"+count2);}

27.判断数组中的元素值是否对称.

 public static void main(String[] args) {int []a={1,2,3,4,5,6,5,4,3,1};boolean b = true;for(int i=0;i<a.length;i++){if(a[i] != a[a.length-1-i]){b = false;}}System.out.println(Arrays.toString(a) +"是否对称:"+b);}

Java基础知识小练习合集相关推荐

  1. Java基础能力精选文章合集200篇

    小编根据知识图谱整理了CSDN技术大咖的优质文章200篇,帮助Java工程提升基础能力,实现系统化持续学习! Java工程师基础能力文章200篇大合集包含: [JavaSE]30篇.[Lambda表达 ...

  2. 阿里深资架构师整理的Java 基础知识小抄 赶紧收藏

    本篇算是 Java 的基础知识小抄吧,之所以说小抄是因为觉得涵盖不是很细很全,但是基本的内容都有,当然后头还会继续完善,只是不会再用笔记录了!按照现在的习惯,先附上一张思维导图: 1. 安装与环境配置 ...

  3. c语言编写已知xyz,C语言编程基础——xyzGame小游戏合集

    这是一个由纯C语言标准库写的控制台小游戏合集.包含井字棋.贪吃蛇.俄罗斯方块三款简单的小游戏. 初学者非常适合借助这类简单的小游戏锻炼编程技能,同时感受编程的乐趣

  4. Java、Python小游戏合集

    Java源码及图片素材合集 Java包括:飞机大战.经典斗兽棋(有过河的那种).五子棋.俄罗斯方块.国际象棋.吃豆人.推箱子(只有5关).扫雷.贪吃蛇.坦克大战.2048等11个小游戏 Python源 ...

  5. Java基础知识小杂库

    大二上半学期:面向对象程序设计(Java) 一.简述JDK与JRE的区别 JRE(Java运行时环境),它相当于操作系统部分,提供了Java程序运行时所需要的基本条件和许多Java基础类,例如:IO类 ...

  6. Java基础知识小练习

    文章目录 99乘法表 数字次数 回文数字 数组求和 评委打分 数据加密 ATM取款 不死兔子 99乘法表 1,案例:双重for循环打印九九乘法表 package com.baidu.demo; pub ...

  7. Java多线程知识小抄集(四)——完结

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  8. Java多线程知识小抄集(三)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  9. Java多线程知识小抄集(一)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

最新文章

  1. i+=1和i=i+1是否完全等价
  2. Playmaker全面实践教程之Playmaker常用工具
  3. php里h和h的区别吗,编码h264h和h264b有什么区别
  4. C# 调用IP库(QQWry.Dat)查询IP位置及自动升级IP库方法(附IP库下载地址及相关dll下载)...
  5. springboot 前缀_springboot搭配thymeleaf访问html页面的时候,什么时候需要自定义前缀和后缀呢...
  6. 对NVM区的合理使用
  7. ALERT日志中常见监听错误:ORA-3136错误的排查
  8. Pytorch的可视化工具tensorboardX
  9. Java 中时间处理SimpleDateFormat 中HH和hh的区别
  10. linux 配置ssh免密码登陆本机
  11. 极客大学产品经理训练营:产品规划与功能规划 第15课总结
  12. FastStone Capture注册破解码
  13. 固态硬盘(SSD)——NAND闪存芯片(颗粒)QLC、SLC、MLC、TLC
  14. 英文标题首字母大写规则
  15. Python爬虫进阶之爬取篮球赛数据
  16. 外贸客户如何选择供应商:5R原则
  17. 如何对图像进行卷积操作
  18. POI Excel插入图片(网络路径、本地路径)
  19. java通过framer生成word_DSO Framer Control Object 操作word文件
  20. ASP.NET MVC5 实现基于Quartz.NET任务调度

热门文章

  1. WordPress如图略缩图不显示问题
  2. 会喊麦的CTO:从外包仔到熊猫直播CTO的技术态度丨今晚直播
  3. P2p流媒体直播与视频会议有什么不同?
  4. 自行更换锐捷RG-EG2000系列的内置硬盘
  5. jquery隐藏侧边栏和折叠侧边栏方法
  6. 饿了么开放平台接入(2)——使用Java对接店铺
  7. 外国客户一般汇款到国内需要多久时间?
  8. Mozilla FireFox Gecko内核源代码解析(4.nsHTMLTokens)
  9. 工业机器人-基于伺服电机的PMSM控制系统硬件电路设计
  10. Ubuntu 22.04 安装中文输入法