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;
            ...

*(三)代码托管**

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

转载于:https://www.cnblogs.com/yu-3356/p/6576352.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值