飞道的博客

Java零基础学习之路(十四)Java初学者练习题

233人阅读  评论(0)

一、Java基础练习题

1、下载JDK,并安装,然后配置环境变量path以及classpath,编写HelloWorld程序输出以下学生信息:

2、学号,姓名,年龄,性别,家庭住址等。

3、建议初学者,针对如上练习多写一遍。

下载JDK,并安装,然后配置环境变量path以及classpath,编写HelloWorld程序输出以下学生信息:学号,姓名,年龄,性别,家庭住址等。


  
  1. public class HelloWorld {
  2. public static void main(String[] args) {
  3. System. out.println( "学号 = 100000");
  4. System. out.println( "姓名 = 动力节点");
  5. System. out.println( "年龄 = 9");
  6. System. out.println( "性别 = 男");
  7. System. out.println( "住址 = 北京大兴经济技术开发区大族企业湾10号楼A座");
  8. }
  9. }

二、Java标识符与关键字练习题

● 熟记标识符的命名规则和规范。

● 分析以下单词哪些是合法的标识符,哪些不合法:

1、myName,字,My_name,Points,$points,_sys_ta,OK,_23b,_3_

2、_3_(合法)

3、_23b(合法)

4、OK(合法)

5、_sys_ta(合法)

6、$points(合法)

7、Points(合法)

8、My_name(合法)

9、字(合法)

10、myName(合法

11、#name,25name,class,&time,if,Hello World

12、Hello World(不合法:标识符不能含有空格)

13、if(不合法:关键字不能做标识符)

14、&time(不合法:标识符不能有&)

15、class(不合法:关键字不能做标识符)

16、25name(不合法:标识符不能以数字开始)

17、#name(不合法:标识符不能有#)

 

三、 Java变量练习题

查阅相关资料,使用Java中的八种基本数据类型完成变量的声明,给每一个变量赋值,并且重新赋值,并将所有变量输出到控制台。


  
  1. public class Chapter02 {
  2. public static void main(String[] args) {
  3. byte b = 127;
  4. short s = 32767;
  5. int i = 2147483647;
  6. long l = 900L;
  7. float f = 3.4f;
  8. double d = 3.14;
  9. boolean b1 = true;
  10. char c = 'a';
  11. System. out.println(b);
  12. System. out.println(s);
  13. System. out.println(i);
  14. System. out.println(l);
  15. System. out.println(f);
  16. System. out.println(d);
  17. System. out.println(b1);
  18. System. out.println(c);
  19. b = 1;
  20. s = 1;
  21. i = 1;
  22. l = 1L;
  23. f = 1.0f;
  24. d = 1.0;
  25. b1 = false;
  26. c = '中';
  27. System. out.println(b);
  28. System. out.println(s);
  29. System. out.println(i);
  30. System. out.println(l);
  31. System. out.println(f);
  32. System. out.println(d);
  33. System. out.println(b1);
  34. System. out.println(c);
  35. }
  36. }

 

四、Java数据类型练习题

1、short s1 = 1; s1 = s1 + 1;有什么错?

s1是short类型,1是int类型,short和int混合运算的时候short会自动转换为int类型,所以s1 + 1编译器检测出是int类型,int类型无法赋值给short类型的变量s1。这样修改:s1 = (short)(s1 + 1);

2、 char类型变量能不能储存一个中文的汉字,为什么?

java中的文字采用unicode编码,一个中文占用2个字节,char类型在java中就是占用两个字节,所以java中的char类型完全可以容纳一个汉字。

3、float f = 1.0有什么错?

1.0字面量被当做double类型处理,大容量double无法赋值给小容量float。这样修改,两种方案:第一种方案是1.0后面添加f/F。第二种方案是强制类型转换:float f = (float)1.0;

4、long a = 2147483648有什么错?

不是long类型存不下2147483648,而是java把2147483648当做int类型来处理,但本身已经超出int类型范围。这样修改:long a = 2147483648L;

5、 int i = 0xffff有问题吗?

没有问题:0xffff以0x开始表示十六进制表示方式,ffff转换成十进制是:65535

6、char c = 65536有问题吗,为什么?

65536已经超出char类型取值范围,不能直接赋值,这样修改:char c = (char)65536;

 

五、Java运算符练习题

练习以下程序并分析程序的执行结果。

第1题:


  
  1. int x = 10;
  2. int a = x+ x++;
  3. System.out. println( "a =" + a);
  4. System.out. println( "x =" + x);
  5. int b = x + ++x;
  6. System.out. println( "b =" + b);
  7. System.out. println( "x =" + x);
  8. int c = x + x--;
  9. System.out. println( "c =" + c);
  10. System.out. println( "x =" + x);
  11. int d = x + --x;
  12. System.out. println( "d =" + d);
  13. System.out. println( "x =" + x);

执行结果如下图所示:

第2题:


  
  1. int a = 15;
  2. int b = 2;
  3. double c = 2;
  4. System.out. println(a + "/" + b + "=" + (a / b));
  5. System.out. println(a + "%" + b + "=" + (a % b));
  6. System.out. println(a + "/" + c + "=" + (a / c));
  7. System.out. println(a + "%" + c + "=" + (a % c));

执行结果如下图所示:

第3题:


  
  1. boolean x, y, z;
  2. int a = 15;
  3. int b = 2;
  4. x = a > b; // true;
  5. y = a < b; // false;
  6. z = a != b; // true;
  7. System.out. println( "x =" + x);
  8. System.out. println( "y =" + y);
  9. System.out. println( "z =" + z);

执行结果如下图所示:

第4题:


  
  1. int x;
  2. double y;
  3. x = ( int) 22.5 + ( int) 34.7;
  4. y = ( double) x;
  5. System. out.println( "x = " + x);
  6. System. out.println( "y = " + y);

执行结果如下图所示:

第5题:


  
  1. int i = 5;
  2. int j = 5;
  3. int m = 5;
  4. int n = 5;
  5. i++;
  6. j = j + 1;
  7. m--;
  8. n = n - 1;
  9. System.out. println(i);
  10. System.out. println(i++);
  11. System.out. println(++i);
  12. System.out. println(i--);
  13. System.out. println();
  14. System.out. println(j);
  15. System.out. println(j++);
  16. System.out. println(j--);
  17. System.out. println(--j);
  18. System.out. println();
  19. System.out. println(m);
  20. System.out. println(n);

执行结果如下图所示:

第6题:


  
  1. int i = 0;
  2. int j = 0;
  3. System.out. println(i);
  4. System.out. println(j);
  5. i++;
  6. ++j;
  7. System.out. println(i);
  8. System.out. println(j);
  9. System.out. println( "--------------------------");
  10. System.out. println(i++);
  11. System.out. println(++j);
  12. System.out. println( "--------------------------");
  13. System.out. println(i);
  14. System.out. println(j);

执行结果如下图所示:

六、Java控制语句练习题

 

编写java程序,用循环结构打印如下的数值列表:

1 10 100 1000

2 20 200 2000

3 30 300 3000

4 40 400 4000

5 50 500 5000


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. for( int i= 1 ; i<= 5 ; i++){
  4. int temp = i;
  5. for( int j= 1; j<= 4 ; j++){
  6. System. out.print(temp + " ");
  7. temp *= 10;
  8. }
  9. System. out.println();
  10. }
  11. }
  12. }

● 打印2到10000的所有素数,每行显示8个素数。


  
  1. public class Test {
  2. public static void main( String[] args) {
  3. int count = 0;
  4. for( int i= 2;i<= 10000;i++){
  5. boolean isPrimeNum = true;
  6. for( int j= 2;j<i;j++){
  7. if(i % j == 0){
  8. isPrimeNum = false;
  9. break;
  10. }
  11. }
  12. if(isPrimeNum){
  13. System.out. print(i + " ");
  14. count++;
  15. if(count == 8){
  16. System.out.println();
  17. count = 0;
  18. }
  19. }
  20. }
  21. }
  22. }

● 编写程序,计算5的阶乘。


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. int result = 1;
  4. for( int i= 1; i<= 5; i++){
  5. result *= i;
  6. }
  7. System. out.println( "5的阶乘 = " + result);
  8. }
  9. }

● 控制台输入年龄,根据年龄输出不同的提示。


  
  1. public class Test {
  2. public static void main( String[] args) {
  3. java.util.Scanner s = new java.util.Scanner(System.in);
  4. System.out. print( "请输入年龄:");
  5. int age = s.nextInt();
  6. if(age < 0 || age > 150){
  7. throw new RuntimeException( "对不起,年龄值不合法!");
  8. }
  9. String grade = "你是老年人";
  10. if(age < 5){
  11. grade = "可爱的小baby";
  12. } else if(age < 10){
  13. grade = "你还是个小屁孩";
  14. } else if(age < 15){
  15. grade = "小少年,不错哦";
  16. } else if(age < 18){
  17. grade = "你是个青少年";
  18. } else if(age < 35){
  19. grade = "你是个青年人";
  20. } else if(age < 50){
  21. grade = "你已是中年人";
  22. }
  23. System.out.println(grade);
  24. }
  25. }

● 编写程序输出下图菱形。

 


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. int lay = 9;
  4. for ( int m = 1; m <= (lay + 1) / 2; m++){
  5. for ( int b = 1; b <= (lay + 1) / 2 - m; b++){
  6. System. out.print( " ");
  7. }
  8. for ( int c = 1; c <= m * 2 - 1; c++) {
  9. System. out.print( "*");
  10. }
  11. System. out.println();
  12. }
  13. for ( int d = (lay + 1) / 2 - 1; d >= 1; d--){
  14. for ( int b = 1; b <= (lay + 1) / 2 - d; b++){
  15. System. out.print( " ");
  16. }
  17. for ( int c = (lay + 1) / 2 - d; c <= (lay + 1) / 2 - 2 + d; c++){
  18. System. out.print( "*");
  19. }
  20. System. out.println();
  21. }
  22. }
  23. }

 

● 篮球从5米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度是0.1米。 


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. double height = 5.0;
  4. int count = 0;
  5. while(height > 0.1){
  6. height *= 0.3;
  7. count++;
  8. }
  9. System. out.println( "弹起次数 = " + count);
  10. }
  11. }

 

 七、Java方法练习题

 

● 使用递归方式计算N的阶乘。


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. int n = 5;
  4. int result = factorial(n);
  5. System. out.println(n + "的阶乘 = " + result);
  6. }
  7. public static int factorial(int n) {
  8. if(n == 1){
  9. return 1;
  10. }
  11. return n * factorial(n - 1);
  12. }
  13. }

● 编写程序,模拟用户登录功能,程序开始运行时先在DOS命令窗口中初始化登录页面,提醒用户输入用户名和密码,当用户输入用户名为admin,密码为123的时候登录成功,打印欢迎信息,当用户输入的用户名和密码不正确打印错误提示信息并退出系统。对于以上的程序大家尽可能定义相关方法来完成,不要将所有代码都放到main方法当中。


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. //初始化界面
  4. initUI();
  5. }
  6. public static void login(String username, String password) {
  7. if( "admin". equals(username) && "123". equals(password)){
  8. System. out.println( "登录成功,欢迎"+username+ "回来!");
  9. } else{
  10. System. out.println( "对不起,用户名或者密码错误!");
  11. }
  12. }
  13. public static void initUI() {
  14. java.util.Scanner s = new java.util.Scanner(System. in);
  15. System. out.println( "欢迎使用本系统,请登录!");
  16. System. out.print( "用户名:");
  17. String username = s.next();
  18. System. out.print( "密码:");
  19. String password = s.next();
  20. //登录
  21. login(username, password);
  22. }
  23. }

● 通过方法重载、方法重复利用完成以下功能:

1、定义一个方法,该方法可以选出2个int类型较大的数据,返回值是较大的数据。

2、再定义一个方法,该方法可以选出3个int类型中较大的数据,返回值是较大的数据。

3、要求使用方法重载机制,要求代码体现出重复利用。

main方法中编写程序进行测试。


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. System. out.println(getBiger( 10, 20));
  4. System. out.println(getBiger( 5, 6, 4));
  5. }
  6. public static int getBiger(int a , int b){
  7. return a > b ? a : b;
  8. }
  9. public static int getBiger(int a , int b , int c){
  10. return getBiger(a , b) > c ? getBiger(a , b) : c;
  11. }
  12. }

 

八、 Java面向对象练习题

 

●设计日期类,每个日期对象都可以描述年月日信息。


  
  1. public class Date {
  2. int year;
  3. int month;
  4. int day;
  5. }

 

● 设计男人类,每个男人都有身份证号、姓名、性别、女人。设计女人类,每个女人都有身份证号、姓名、性别、男人。


  
  1. public class Man {
  2. String idCard;
  3. String name;
  4. boolean sex;
  5. Woman gril;
  6. }

 


  
  1. public class Woman {
  2. String idCard;
  3. String name;
  4. boolean sex;
  5. Man boy;
  6. }

 

● 设计银行账户类,每个账户都有账号、密码、余额等信息。


  
  1. public class Account {
  2. String actno;
  3. String password;
  4. double balance;
  5. }

● 设计微信账号类,每个微信账号都有微信号、手机号、昵称等信息。


  
  1. public class WebChatAccount {
  2. String webChatId;
  3. String phone;
  4. String nickname;
  5. }

九、Java对象的创建和使用练习题

● 定义丈夫类Husband和妻子类Wife,丈夫类的属性包括:身份证号,姓名,出生日期,妻子。妻子类的属性包括:身份证号,姓名,出生日期,丈夫。分别给这两个类提供构造方法(无参数构造方法和有参数构造方法都要提供),编写测试程序,创建丈夫对象,然后再创建妻子对象,丈夫对象关联妻子对象,妻子对象关联丈夫对象,要求能够输出这个“丈夫对象”的妻子的名字,或者能够输出这个“妻子对象”的丈夫的名字。要求能够画出程序执行过程的内存图。并且要求在程序中演示出空指针异常的效果。


  
  1. public class Husband {
  2. String idCard;
  3. String name;
  4. String birth;
  5. Wife w;
  6. public Husband() {
  7. super();
  8. }
  9. public Husband( String _idCard, String _name, String _birth) {
  10. super();
  11. this.idCard = _idCard;
  12. this.name = _name;
  13. this.birth = _birth;
  14. }
  15. }

 


  
  1. public class Wife {
  2. String idCard;
  3. String name;
  4. String birth;
  5. Husband h;
  6. public Wife() {
  7. super();
  8. }
  9. public Wife( String _idCard, String _name, String _birth) {
  10. super();
  11. this.idCard = _idCard;
  12. this.name = _name;
  13. this.birth = _birth;
  14. }
  15. }

 


  
  1. public class Test {
  2. public static void main(String[] args) {
  3. Husband zhangsan = new Husband( "11111" , "zhangsan" , "2020-10-01");
  4. Wife lisi = new Wife( "22222" , "lisi" , "2020-10-02");
  5. zhangsan.w = lisi;
  6. lisi.h = zhangsan;
  7. System. out.println(zhangsan.name + "的妻子是" + zhangsan.w.name);
  8. System. out.println(lisi.name + "丈夫是" + lisi.h.name);
  9. zhangsan.w = null;
  10. lisi.h = null;
  11. System. out.println(zhangsan.name + "的妻子是" + zhangsan.w.name);
  12. System. out.println(lisi.name + "丈夫是" + lisi.h.name);
  13. }
  14. }

执行结果如下图所示:


转载:https://blog.csdn.net/bjpowernode_com/article/details/110925238
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场