Java第一次作业——Java语言基础
《Java技术》第一次作业
(一)学习总结
1.Scanner实现基本数据的方法
Scanner可以输入数据,可以对数据进行验正,存放在Java.util中。
使用方法
import java .util.Scanner
Scanner input=new Scanner(System.in);
int num=input.nextInt();
例如
--
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
System.out.print("请输入数字: ");
int input=in.nextInt(); //读取一行数据
System.out.println(input);
}
}
2.Random类和Math类的random()方法产生随机数的区别和特点。
区别
Random使用单个 long 种子创建一个新的随机数生成器。该种子是伪随机数生成器的内部状态的初始值,该生成器可通过方法 next(int) 维护。
例如
调用 new Random(seed) 等效于:
Random rnd = new Random();
rnd.setSeed(seed);
Math类的random返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
例如 第一次调用该方法时,与以下表达式完全相同
new java.util.Random
特点
--
Random类是一个类(java.util.Random),里面含有很多方法。
Math类的random此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。
3.JDK,JVM,JRE的作用与关系
利用JDK开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码。
4.PATH和CLASSPATH的作用
PATH环境变量作用是指定命令搜索路径,在执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java等待,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。
CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。
5.C语言与Java对应数据类型的不同
Java比C语言多了一个boolean类型,可以直接返回值真假。
(二)实验总结
1.猜数游戏
-
程序设计思路:在程序里随机产生一个数,请用户输入一个数,用if...else判断猜大了、猜小了、猜对了,并提示还剩几次机会。
if(a<rw)
System.out.println("猜小了,剩余的机会次数为:"+j);
else if(a>rw)
System.out.println("猜大了,剩余的机会次数为:"+j);
else
System.out.println("猜对了!");
如果猜对了,用if...else判断是第几次猜对的,得多少分。用switch...case判断是否进行下一次游戏。
System.out.println("是否进行下一轮游戏,1:是,2:否");
Scanner inb=new Scanner(System.in);
int b=inb.nextInt();
switch(b){
case 1:System.out.println("输入一个价格");
break;
case 2:System.out.println("一共猜的次数为:"+i);
System.out.println("得分为:"+c);
break;
- 实验问题分析:
问题1:不进行下一轮游戏时,没能输出猜的次数和得分
原因:case语句直接breakl
解决方案:加上输出猜的次数和得分的语句
2.万年历
-
程序设计思路:请用户输入一个年份一个月份。编写一个方法判断该年是不是闰年,public static boolean isLeap(int year),用if...else判断,返回值为boolean型。
public static boolean isLeap(int year){ //判断闰年
if((year%40&&year%100!=0)||year%4000){
return true;
}
return false;
编写一个方法判断某年某月有多少天,public static int days(int year,int month),月份为2月时,调用public static boolean isLeap(int year)方法,返回值为该月有多少天。
public static int days(int year,int month){//判断某年某月有多少天
boolean b;
b=isLeap(year);
if(month1||month3||month5||month7||month8||month10||month12){
return 31;
}
else if(month4||month6||month9||month==11)
return 30;
else{
if(b)
return 29;
else
return 28;
}
}
编写一个方法判断计算某年某月之前距离1900年1月1日的总天数,public static int totalDays(int year,int month),先计算该年距离1900年有多少天,注意是不是闰年,然后计算该月之前到该年1月1日有多少天,把两个天数相加。
pubilc static int totalDays(int year,int month){
int i,n,d;
int sum=0,sum1=0,sum2=0;
for(i=1900;i<year;i++){
boolean b;
b=isLeap(i);
if(b)
n=366;
else
n=365;
sum1=sum1+n;
}
for(i=1;i<month;i++){
if(i1||i3||i5||i7||i8||i10||i12){
d=31;
}
else if(i4||i6||i9||i==11)
d=30;
else{
boolean b;
b=isLeap(year);
if(b)
d=29;
else
d=28;
}
sum2=sum2+d;
}
sum=sum1+sum2;
return sum;
}
编写一个方法判断该月第一天是星期几,public static int weekEnd(int year,int month),判断方法为,调用public static int totalDays(int year,int month)方法,1+totalDays%7是几就是星期几。
编写一个输出某年某月日历的方法,public static void printCalender(int year,int month),调用public static int weekEnd(int year,int month)和public static int days(int year,int month)这两个方法,如果该月第一天不是星期日,利用循环输出\t,利用循环打印输出日历,每当输出\t的个数和日期的个数在一行达到7个时,请换行。
- 实验问题分析:
问题1:日历一行直接输出了
原因:不会换行
解决方案:让输出\t的个数加上输出日期的个数与7求余。
(三)代码托管
- 码云commit历史截图
![]()
(四)学习进度条
| 代码行数(新增/累积) | 学习时间(新增/累积) | 本周学习内容 | |
|---|---|---|---|
| 目标 | 5000行 | 300小时 | |
| 第2-4周 | 100/100 | 20/20 | 学习了数组和方法 |
| 第5周 | |||
| 第6周 |

浙公网安备 33010602011771号