实验一 Java编程基础
一、实验目的
在集成开发环境下,依照Java语言的基本语法编译和执行简单Java的程序,通过本次实践环节理解java程序的运行机制,掌握 java 语言的基本结构和程序设计方法。
二、实验目标
(1)能够运用集成开发工具开发简单的Java程序,理解java语言的语法规则;
(2)能够利用Java语言解决实际问题,进一步熟悉和掌握java语言的程序设计的方法。
三、实验内容
3.1 实验环境
IntelliJ IDEA Community Edition 2021.1 x64 + openjdk-16.0.1
3.2 实验内容
- 小明带了20元来商店买一本书,剩余的钱还可以买哪种商品?可以购买几件?剩余多少钱?
|
|
---|---|
|
|
|
|
|
|
|
|
- 利用switch语句将学生成绩分为优秀(90-100分)、良好(80-89)、中(70-79),及格(60-69)和不及格(<60)。
- 定义一个计算器类,该类中包含加、减、乘、除4个静态方法,并定义一个测试类,调用对应的方法进行四则运算。
- 打印100-999以内的水仙花数(水仙花数即每个位数上数字的3次幂之和等于数字它本身,如153=1*1*1+5*5*5+3*3*3)。
- 在类中定义一个静态方法printStar打印一颗树,该方法没有返回值,需要一个整形参数number定义树的高度,在主方法中调用这个方法,number值为5和10时得到下图的结果。
四、实验过程分析
4.1 实验步骤
- 1.小明带了20元来商店买一本书,剩余的钱还可以买哪种商品?可以购买几件?剩余多少钱?
实验代码
public class experimentOne {
public static void main(String[] args) {
int money = 20 -10;
int count = 0;
for (int i = 0; i <= money/1; i++) {
for (int j = 0; j <= money / 2; j++) {
for (int k = 0; k <= money / 5; k++) {
for (int g = 0; g <= money / 10; g++) {
int sum = i * 1 + j * 2 + k * 5 + g * 10;
if (sum <= money) {
System.out.printf("方案%2d,买橡皮%2d个、买尺子%2d把、买牛奶%2d瓶、买书%2d本,剩余%2d元\n", ++count, i, j, k, g, money - sum);
} else break;
}
}
}
}
System.out.printf("总共%d种方案.\n", count);
}
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=64278:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentOne
方案 1,买橡皮 0个、买尺子 0把、买牛奶 0瓶、买书 0本,剩余10元
方案 2,买橡皮 0个、买尺子 0把、买牛奶 0瓶、买书 1本,剩余 0元
… …
方案49,买橡皮 9个、买尺子 0把、买牛奶 0瓶、买书 0本,剩余 1元
方案50,买橡皮10个、买尺子 0把、买牛奶 0瓶、买书 0本,剩余 0元
总共50种方案.
Process finished with exit code 0
- 2.利用switch语句将学生成绩分为优秀(90-100分)、良好(80-89)、中(70-79),及格(60-69)和不及格(<60)。
实验代码
import java.util.Scanner;
public class experimentTwo {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int score = cin.nextInt();
score /= 10;
if (score > 10 || score < 0)
return;
switch (score) {
case 10:
case 9:
System.out.println("优秀");
break;
case 8:
System.out.println("良好");
break;
case 7:
System.out.println("中");
break;
case 6:
System.out.println("及格");
break;
default:
System.out.println("不及格");
break;
}
}
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=59140:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentTwo
60
及格
Process finished with exit code 0
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=62215:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentTwo
75
中
Process finished with exit code 0
- 3.定义一个计算器类,该类中包含加、减、乘、除4个静态方法,并定义一个测试类,调用对应的方法进行四则运算。
实验代码
import java.util.Scanner;
class Calculator {
public Calculator() { }
public static int add(int n, int m) {return n + m;}
public static int sub(int n, int m) {return n - m;}
public static int mult(int n, int m) {return n * m;}
public static int div(int n, int m) {
try { return n / m; }
catch (ArithmeticException e) {
System.out.println("/ by zero.");
return 0;
}
}
}
class test {
public static void testCa() {
Calculator cA = new Calculator();
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
int m = cin.nextInt();
System.out.println("add:"+cA.add(n, m));
System.out.println("mult:"+cA.mult(n, m));
System.out.println("sub:"+cA.sub(n, m));
System.out.println("div:"+cA.div(n, m));
}
}
public class experimentThree {
public static void main(String[] args) { test.testCa(); }
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=55362:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentThree
15 20
add:35
mult:300
sub:-5
div:0
Process finished with exit code 0
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=61776:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentThree
15 0
add:15
mult:0
sub:15
/ by zero.
div:0
Process finished with exit code 0
- 4.打印100-999以内的水仙花数(水仙花数即每个位数上数字的3次幂之和等于数字它本身,如153=1*1*1+5*5*5+3*3*3)。
实验代码
public class experimentFour {
public static void main(String[] args) {
for (int i = 100; i <= 999; i++) {
if (flower.isFlower(i))
System.out.println(i);
}
}
}
class flower {
public flower() {}
public static boolean isFlower(int n) {
int sum = 0;
int N = n;
while (N > 0) {
int temp = N % 10;
sum = sum + temp * temp * temp;
N /= 10;
}
return sum == n;
}
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=60409:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentFour
153
370
371
407
Process finished with exit code 0
- 5.在类中定义一个静态方法printStar打印一颗树,该方法没有返回值,需要一个整形参数number定义树的高度,在主方法中调用这个方法,number值为5和10时得到下图的结果。
import java.util.Scanner;
public class experimentFive {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int number = cin.nextInt();
experimentFive_test.printStar(number);
}
}
class experimentFive_test {
public experimentFive_test() {}
public static void printStar(int number) {
for (int i = 1; i <= number; i++) {
for (int j = 1; j <= number - i; j++) {
System.out.print(' ');
}
for (int j = 1; j <= i * 2 - 1; j++) {
System.out.print('*');
}
System.out.println();
}
}
}
结果输出
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=50731:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentFive
5
*
***
*****
*******
*********
Process finished with exit code 0
C:\Users\a\.jdks\openjdk-16.0.1\bin\java.exe "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\lib\idea_rt.jar=50737:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\a\Documents\Tencent Files\FileRecv\MobileFile\lession\out\production\lession" experimentFive
10
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
Process finished with exit code 0
4.2 错误分析
错误情况
- 在计算器实验时在除法计算时未考虑到除数为0的情况。导致在进行除法运算时发生异常。
解决方案
//将
public static int div(int n, int m) {return n / m;}
//替换为
public static int div(int n, int m) {
try {
return n / m;
} catch (ArithmeticException e) {
System.out.println("/ by zero.");
return 0;
}
}
五、个人总结
在问题发生时应该多思考并与同学进行交流以获得帮助,并及时解决问题,借助强大的互联网知识平台能够有效的获得更多知识。熟悉以及掌握配置ide及实验环境十分必要,能够在编程时解决大量技术性错误。基础性知识的学习能为我们的编程思想提供极大的有效助力,基础知识的欠缺也是我目前遇到的最重大的问题,在课下的自我学习十分重要,在以后的学习生活中一定会努力加强相关知识的学习。十分感谢在遇到困难时同学们的热心帮助,他们为我提供了精神以及学习方面的极大帮助。