实验报告
课程:程序设计与数据结构
班级: 1623
姓名: 张旭升
学号:20162329
指导教师:娄嘉鹏 王志强
实验日期:3月25日
实验密级: 非密级
预习程度: 已预习
必修/选修: 必修
实验序号: cs_29
实验名称: Java开发环境的熟悉(IDEA)
实验目的与要求:
使用IDEA编译、运行简单的Java程序;
使用Eclipse编辑、编译、运行、调试Java程序。
实验内容
- Java开发环境的熟悉(Windows下的bash)
- 实验练习:实现求正整数1—n之间所有质数的功能,并进行测试。
实验过程
- 练习程序的编辑:
Scanner scan = new Scanner(System.in); System.out.print("How many numbers do you need to filter: "); int A = scan.nextInt(); int number[] = new int[A]; for (int B = 0; B < A ; B++) { number[B] = B + 1; if (number[B] <= 3) { System.out.print(number[B] + " "); C = C + 1; } else if ( number[B] == 5) { System.out.print(number[B] + " "); C = C + 1; } else if (number[B] == 7){ System.out.print(number[B] + " "); C = C + 1;} else if (number[B] == 11){ System.out.print(number[B] + " "); C = C + 1;} else if (number[B] == 13){ System.out.print(number[B] + " "); C = C + 1;} else if ( number[B] % 2 == 0 || number[B] % 3 == 0 || number[B] % 5 == 0 || number[B] % 7 == 0 || number[B] % 11 == 0 || number[B] % 13 == 0 ) F = 1; else { System.out.print(number[B] + " "); C = C + 1; } if (F == 1) F++; else if (C % D == 0) System.out.println(); } System.out.println();
- 练习程序的JDB调试:每次调试设置断点是没有问题的,但是只要输入"run"就会出现此种情况。
实验中遇到的问题
-
问题:
我本想使筛选出的质数每行打印5个数,首先我设置了一个变量C的初值为0和一个常量D=5,然后在每次会打印一个质数的位置后加入一个C++,然后在for语句的第一个if嵌套语句后又加了一个if语句
{ if(C % D == 0)
System.out.println();}
运行之后发现有时打印5个数后不止会空出一行。
-
解决办法:
检查代码,判断运行过程,整理思路,发现在每次打印一个质数时会使C+1是没有问题的,之后的条件判断也是没有问题的,但是问题出在所打印的数并不是连续的,当该数是质数时C会加一,但是当该数不是质数时C是不变的就导致当C=5时判断的下一个数却不是个质数时就会多空出一行。然后我又加了一个嵌套才实现了我想要的结果。
实验不足
实验程序中的不足在于不能在用户输入一个极大的整数时继续加以判断,此程序也只能判断1——169之间的质数如果有再大的质数出现就会被滤掉,如果想继续扩大可筛选范围还需要继续在其中加入条件。
实验心得
Java编程环境
对于Java编程环境的熟悉其实在几周的学习中已经有很大的进步了,如在Windows下想要运行Java程序就必须配置环境变量,如果只是运行Java程序的话只需要安装jre就可以了,但是想要做Java编程的话就要安装jdk,而我使用的是Windows命令行下安装bash来进行Java程序开发的,bash下不好的地方就在于没有中文解释对我这种英语很差的人来说还是很艰难的。
练习程序的设计
在本次实验程序设计中我耗费了大量的时间,编辑的语法错误已经极少了,出错多的还是在相关逻辑运算中的错误,但是由于JDB调试总是出现问题,导致自己调试代码会浪费很多的时间,在本次实验后还要加强JDB调试的相关学习。