《Java技术》第一次作业

(一)学习总结

1.Scanner类
•Scanner类放在java.util包中,表示此类是根据接收InputStream类型的构造方法,扫描输入文本的新的实用程序,可以针对任何要处理的文本内容编写自定义的语法分析器。在程序开头输入“import java.util.Scanner;”表示导入键盘输入功能。

•例如读取一个整型数据:

Scanner input = new Scanner(System.in);
int num = input.nextInt();

•可以读取其他类型的数据:

double nextDouble() double类型
float nextFloat() float类型
int nextInt()  int类型
long nextLong() long类型 
String nextLine() 输入的信息为读取行
String next() 输入的信息为字符串

例如:

import java.util.Scanner;
public class ww {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入整数: ");
int num=input.nextInt();  
System.out.println(num); 
}
}

2.Random类与Math类中的Random()方法
•java.lang包中的Math类的Random()方法就是调用Random类的nextDouble()方法。
•java.util包中的Random类是一个随机数产生类,是产生伪随机数的,可以指定随机数范围。然后任意产生在此范围中的数字。
•Random类可以产生以下类型数据:

public boolean nextBoolean(); 布尔类型的值
public double nextdouble(); double值
public float nextFloat(); float值
public int nextInt(); int值
public long nextLong(); long值

•实例:

import java.util.Random;
public class ww{
public static void main(String[] args){
    Random Rand = new Random();
    int num = Rand.nextInt(10);
    System.out.println("Random的值为:" + num);
    System.out.println("Math中的值:" + (Math.random()));
}

}
3. 总结
准备作业的这几天,一直都在图书馆泡着,看了许多关于java的书,发现之前学的c和数据结构与java有一定的区别,就说子函数吧,可以在main里面写,也可以在main外面写(必须要在类体内)。新认识了一种数据类型,boolean类型,有两种值,一个是true,一个是false。我发现很多新多东西,也产生了浓厚的兴趣,完成作业的我很兴奋,这几天努力的成果很显著。我会继续加油,靠自己的力量去完成每一个作业。

(二)实验总结

1.猜数游戏

  • 程序设计思路:通过三个for循环来实现猜价格的对错和猜测次数还有是否进行下一轮,通过if语句来判断是否答对。

  • 实验问题分析:
    问题1:无法用循环来进行下一轮游戏
    原因:没有添加循环条件使其继续循环
    解决方案:添加了一个for(;;)利用equals来比较字符串,如果是no就return。
    问题2:只有前三次的分数是对的,最后两次的分数都为20了。
    原因:计算分数的表达式不对
    解决方案:用for循环里面的i来进行计算。

     if(answer>price){
     	System.out.println("很遗憾,猜错了!亲,猜大了!"+"还有"+(4-i)+"次机会");
      answer=shuru(x);
     }
    	else if(answer<price){
    	System.out.println("很遗憾,猜错了!亲,猜小了!"+"还有"+(4-i)+"次机会");
     answer=shuru(x);
     }
     else if(answer==price){
     gread=100-(i*20);
    	System.out.println("0.0 好厉害,猜对啦!"+"得分为"+gread+"分哦!");
     break;
     	}
    	}
    
  1. 万年历
    •程序设计思路:按照以下函数的顺序先构造函数:

         private static boolean isLeap(int year)
         private static int days(int year, int month)
         private static int totalDays(int year, int month)
         我将输出万年历表的程序直接写在main里面了。
    

•问题1:
排版输出几号的时候总是差两天。
•原因:
判断闰年的时候直接用的year,只判断了输入年是否为闰年
•解决方案
将year改为i

        for(i=1900;i<year;i++){
	    if(isLeap(i)){
		w=366+w;
       	}
	    else{
		w=365+w;
	        }	
	    }

•问题2:
输出格式不对
•原因:
println中ln没删除
•解决方案

        System.out.println("日\t一\t二\t三\t四\t五\t六\t");
    	for(int i=1;i<=g;i++){
	         System.out.print(" \t");
	    }	
	    for(int e=1;e<=h;e++){
	    g++;
	        System.out.print(e+"\t");
	    if(g%7==0){
   		    System.out.print("\n");
    	}
        }

(三)[代码托管] https://git.oschina.net/hebau_cs15/cs01wmx.git

  • 码云commit历史截图

(四)学习进度条

代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
目标 8000行 4000小时
第2-4周 400/400 40/40 学习了自己写的代码中的知识点,看了一些课外的程序
第5周
第6周