#《Java技术》第一次作业

时间:2021-08-10 16:21:40

(一)学习总结

1..在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法 java.util.Scanner
例如:

import java.util.Scanner;
Scanner in=new Scanner(System.in);
int x=in.nextInt();

2.Math.random() 方法生成[0, 1)范围内的double类型随机数;

Random random = new Random();
int r = (int)(Math.random() * n);

Random类中的nextXxxx系列方法生成0-n的随机数;

Random random = new Random();
int r = random.nextInt(n);

3.学会了Random的使用方法import java.util.Random;

import java.util.Random;
Random rand=new Random();
int a=rand.nextInt(100);

还学会了boolean类型的使用

boolean flag=true;

但是在函数这一部分还有很多欠缺,不会调用函数,不会写函数,不过我会多练习,把这一部分补回来。

(二)实验总结

1.猜数游戏

  • 程序设计思路:使随机产生一个数据,然后让用户输入自己的数据,最多能够输入五次,与随机产生的数据相比较,若大于随机数,则输出猜大了并输出还剩几次机会,若小于随机数则输出猜小了并输出还剩几次机会,若猜对了则输出猜对并输出成绩,若五次都没有猜对则输出成绩为0,再由用户选择是否继续游戏,继续输入Y,退出输入N。
  • 实验问题分析:
  • 问题1:在写用户选择继续还是退出的语句的时候,不知道应该用什么能够继续游戏。

原因:想到用while,但不知道应该怎么能够表示为真。

解决方案:经过从网上查了一些资料,以及问同学,可以用boolean类型来表示真假。
2.万年历

  • 程序设计思路:计算从1900年到输入年的总天数,用循环计算平年和闰年,平年加365,闰年加366,在计算月的天数1、3、5、7、8、10、12为31天,4、6、9、11为30天,平年2月为28天,闰年2月为29天,用总天数计算出周几,每七个一换行,打印出日历来。
  • 问题1:

    if(year>=1900){
    for(j=1900;j<year;j++){
    if((j%4==0&&j%100!=0)||(j%400==0))
    tday+=366;
    else
    tday+=365;
    }
    }
    else
    System.out.print("输入错误");

    原因:

    if((j%4==0&&j%100!=0)||(j%400==0))

错写成了

if((year%4==0&&year%100!=0)||(year%400==0))

解决方案:在计算天数的时候总是差二十多天,然后就分开输出,发现月的天数,日期天数都正确,但是年的天数有错,后来发现是计算的都是同一年,然后把year改成j,就输出正确了。

问题2:

System.out.println("日\t一\t二\t三\t四\t五\t六");
for(int d=1;d<=week;d++){
System.out.print("\t");
y++;
}
for(int a=1;a<=days;a++){
y++;
System.out.print(a+"\t");
if(y%7==0){
System.out.println();
}

原因:不知道第一天前面应该怎么加空格,不知道换行应该怎么写

解决方案:通过查了一些网上的资料,问同学,以及自己琢磨,想出空格可以用周来表示,用y来表示输出的空格以及输出的日期,使每七个一换行,问题得以解决。

(三)代码托管

  • 码云commit历史截图
    #《Java技术》第一次作业

(四)学习进度条

代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
目标 5000行 300小时
第2-4周 300/300 30/30 学习了Scanner,Random,boolean
第5周
第6周