Java实验一

(一).学习总结
1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。
最简单的数据输入直接使用Scanner类的next()方法即可

 import java.util.Scanner;
    public class ScannerDemo01{
        public static void main(String[] args){
        Scanner scan=new Scanner(System.in);
        System.out.print("输入数据:");
        String str=scan.next();
        System.out.println("输入的数据为:"+str);
        }
    }

类似的,还有一些其他的方法:
nextInt() :读取整型数据     
nextDouble()  :读取双精度数据    
nextLine():读取输入的 下一行内容
实例:

public static void main(String[] args){
    Scanner in=new Scanner(System.in);
	System.out.println("请输入商品价格: ");
    int x=in.nextInt();
    System.out.println("x");
    }

2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
区别:
Math类的random()方法,返回带正号的double值,该值大于等于0.0且小于1.0,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
Random类,可以指定一个随机数的范围,然后任意产生在此范围的中的数字。
实例:

import java.util.Random;
public class RandomDemo01{
    public static void main(String[] args){
    Random r=new Random();
    for(int i=0;i<5;i++){
        System.out.printf(r.nextlnt(100)+"\t");
        }
    }

运行结果:
16 95 18 71 57 86
如果按照Math类的random()输出,结果为0.。。。。。,是一个小于1.0的数。
3.(1)在Java中必须构造Scanner对象,并与System.in关联,写成这样:
Scanner input=new Scanner(System.in); 
才可以进行执行。
(2)在比较字符串的大小时,不可以用==,必须使用String类的equals方法。
实例:

 public class String1{
        public static void main(String[] args){
            String str1="hello";
            String str2=new String"hello";
            System.out.println("str1 equals str2->"(str1.equals(str2)));
            }
    }

(3)Java与C语言相比,当执行代码有错时,Java比C语言告诉你的更加详细。Java中输出语句也与C中的大大不同。虽然刚开始接触Java,对很多东西不是特别熟悉,但我相信随着Java的不断学习,会越来越熟悉,可以快速的写出所需的代码。
(二)实验总结
1.猜商品价格
程序设计思路:首先输入一个标准的商品价格,再输入要猜测的价格,将猜测的价格与标准的进行比较,如果5次都没对,退出,输出标准价格,反之,就要判断它是第几次猜对的,输出还余多少次,是否进行下一轮。
问题1:只进行了一轮,没有下一轮。
原因:没有认真考虑,语句放错了位置。
解决方案: 将语句放入while语句中,让它进行循环。

while(choose!=0)
	{     ...
	      ...
	      ...
          ...	
	System.out.println("输入1继续,0退出");
		choose=in.nextInt();
	}

问题2:分数计算不对
原因:循环的条件不对
解决方案:

for(i=1;i<6;i++)
{
            ...
	else if(x==y)
	{       ...
	        ...
			score=0;
			score=score+100-(i-1)*20;
	System.out.println("得分为:"+score);
	}
}

1.万年历
程序设计思路:首先输入某年,判断是闰年还是平年,在判断了闰平年之后,输入某月,进行判断某月有多少天,与1900年1月比较,相差多少年多少天,计算出总天数,最后还需把判断某年某月某日是星期几,以日历的形式表示出来。
问题1:计算总天数时出错
原因:循环时多加了
解决方案:首先输入某年(大于1900)判断闰平年,分别多少天,进行循环,计算出总的天数n,然后再进行循环月份,1,3,5,7,8,10,12月都是31天,4,6,9,11都是30天,2月闰年29天,平年28天。计算出总的天数n1,最后将n+n1得到某年某月之前到1900年1月总的天数。但这必须注意1月之前是上一年的12月31日,所以要判断输入的月份是否是1月,进行合理的运算。

 for(j=1900;j<year;j++){
    	if(year%4==0&&year%100!=0||year%400==0)
    		{
    			System.out.println("该年为闰年!");
    			n=n+366;
    		}
    		else 
    		{
    			System.out.println("该年为平年!");
    			n=n+365;					
    		}
    		for(k=1;k<month;k++){ 
    		    if(month==1){
    				n1=0;
    				break;
    			}
                    switch(k){	  
                    	case 2:
                    			if( year%4==0&&year%100!=0||year%400==0)
                    			{	       n1=n1+29;            }
                    			else
                    			{          n1=n1+28;            }
                    			break;
                    	case 1:
     

   	case 3: 
            	case 5:
            	case 7:
            	case 8:
            	case 10:
            	case 12:
            			n1=n1+31;
            			break;	            
            	case 4:
            	case 6:
            	case 9:
            	case 11:
            			n1=n1+30;
            			break;  
            }
        } 
	System.out.println("总天数为"+(n+n1));
	}
	问题2:	出日历时间隔和换行有问题
    原因:  "\t",换行求余出错
    解决方案:首先判断第一天是星期几,从该天开始往后依次比较,以"\t"的方式使之列与列对齐,换行时与7求余为0时为一行,当大于7时自动跳转下一行。
                ...
                ...
                ...
    System.out.println("日\t一\t二\t三\t四\t五\t六");
	for(i=1;i<=week;i++){
	  System.out.print("\t");
	 }
	            ...
	            ...
	            ...
    System.out.print(i+"\t");
	  if((i+week)%7==0){
	  System.out.println("\n");
	  }

问题2: 所求的星期不对
原因: 求总天数时出错
解决方案:所包含的多少个年,月,日的总和与7求余,余0为星期日,依次往下。
...

week=(n1+day+n)%7;
            ...

(三)代码托管*


(四)学习进度条
代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
目标 5000行 300小时
第2-4周 300/300 30/30 学习了Java
第5周
第6周

posted @ 2017-03-18 22:00  不羁的青春  阅读(191)  评论(1编辑  收藏  举报