Java.第一次作业

(一)学习总结
1. 在java中通过Scanner类完成控制台的输入;Scanner类实现基本数据输入的方法。
1.1 需要导入java.util.Scanner;
1.2 可以使用不同的next方法,将输入的文本转换为不同类型的值;
1.3 每种数据都有对应的输入方法{特别注意基本类型数据获取的方法以下,易出错:nextInt() :读取整型数据;nextLine():读取输入的 下一行内容};
1.4 常用键盘控制输入操作,引用数据类型:Scanner in=new Scanner(System.in)。

  • /从System中读取一个数/
```
Scanner scan = new Scanner(System.in);
int i = scan.nextInt();
```

//Scanner对于输入的数据类型没有限制,但如果想要对这些数据进行输出就要对以储存的数据进行转换后才能输出。

```
import java.util.Scanner;
public class Test1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner in=new Scanner(System.in);
        int x=in.nextInt();//输入一个正整数
        System.out.println("输入的数字是:"+x);
    }
}
```

2. Random类和Math类的random()方法都能产生随机数。
2.1 这两种方式有什么区别;
util的random是一个类:包含nextInt(),nextDouble ()等类似的方法。
math的random只是一个方法:返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。

  • 对比两种方法产生的随机数:
import java.util.Random;
public class De{
    public static void main(String args[]){
        Random rand=new Random();
        int x=rand.nextInt(100)+1;
        //int x=(int)(Math.random()*100+1); 
        System.out.println("这是调用Random()类产生的随机数");
        System.out.println(x);
        //System.out.println("这是调用Math.random()方法产生的随机数");
        //System.out.println(x);
    }
}

2.2 各有的特点。
Random类产生随机数的方法就是普通的产生随机数的方法只要给定范围就 可以生成随机数;Math的产生随机数的方法是math只能产生0~1的double类型的小数要将它强制转换成int类型的数。

3. 运行下列程序,结果是什么?查阅资料,分析为什么

public class Test {
    public static void main(String args[]) { 
        double a = 0.1;
        double b = 0.1;
        double c = 0.1;
        if((a + b + c) == 0.3){
            System.out.println("等于0.3");
        }else {
            System.out.println("不等于0.3");
        }
    }     
}

结果是:“不等于0.3”,定义的double浮点数类型在运算时,数值有限,会有极小误差,只储存二进制信息。

  • 改进
import java.math.BigDecimal;
import java.math.MathContext;
public class Sa{
       public static void main(String args[]) { 
           BigDecimal a = new BigDecimal(0.1);
           BigDecimal b = new BigDecimal(0.1);
           BigDecimal c = new BigDecimal(0.1);
            if(a.add(b).add(c).round(new MathContext(1)).equals(new BigDecimal("0.3")))
            {
                System.out.println("等于0.3");
            }
            else {
                System.out.println("不等于0.3");
            }
        }
  
    }

4. 总结学习
Java和c在逻辑上有很多共同点,只是在语法方面有所不同,Java比c增加了更多的功能,注意:输出语句中字符串用“+”连接;还是要多写程序,查找问题。

(二) 实验总结

1.看商品猜价格

  • 程序设计思路:系统随机产生一个数作为价格;利用循环语句控制猜价格机会10次,每次输入价格,与随机价格进行比较;判断猜小了猜大了还是猜对了,如果猜对了,则输出一共猜了几次。

2.万年历

  • 程序设计思路:输入要判断的年份,闰年的话满足(year%40&&year%100!=0)||(year%4000),反之平年;输入年份和月份,判断某年某月有多少天;输入年份和月份,判断某年某月距离1900年一月一日有多少天;先算出该年距离1900年有多少天,月份有多少天,然后相加;打印某年某月的日历,调用上面一个方法算出有多少天,跟7取余+1为该月一号星期几。

3.评分系统

  • 程序设计思路:随机产生10位评委对5位同学的打分;去掉最低分和最高分;成绩求和计算平均值。

4.总结
-猜价格,写了两个,暂时有一个程序存在执行错误的地方;然后程序首先重要的是思路问题,语句使用要正确,不断完善,有错的情况下要认真看程序。个人注意的问题:类名的设置;Scanner类的使用;方法的声明;程序的严谨之处。

-万年历,程序会有出现纰漏的时候,考虑不周全(虽然是之前写过的代码),需不断完善。

-评分系统,循环嵌套,Java语句的使用,以及求平均值方法。

(三)代码托管


posted @ 2018-03-18 16:59  小北ML  阅读(118)  评论(0编辑  收藏  举报