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(month
4||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(i
4||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周
posted @ 2017-03-14 20:31  .M  阅读(532)  评论(2)    收藏  举报