Java第一次作业

一,作业总结

1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。

import java.util.Scanner;
public class shuru {
    public static void main(String args[]){
        Scanner input=new Scanner(System.in);
        int sr=input.nextInt();
     System.out.print("您输入的是"+sr);
    }    
}    

文本扫描类Scanner(java .util.Scanner),可以使用不同的next方法将输入的文本转换为不同类型的值。 获取基本类型数据的方法是:

nextInt() :读取整型数据

nextDouble() :读取双精度数据

next()—读取输入的下一个单词(空格作为分隔符)

nextLine():读取输入的 下一行内容

构造Scanner对象,并与System.in关联

Scanner input=new Scanner(System.in);

调用Scanner的各种方法完成输入操作。

int num=input.nextInt();

例如在我写的程序中输入 “322”,那么它便会显示“您输入的是322”。


2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制转换int,然后再加上50即为50~100.
最终代码:(int)(Math.random()*50) + 50
Random类产生的随机数,在其最大值范围内,按照概率均匀分布的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。
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");
        }
    }     
}

为了处理精度损失的问题,可以使用java.math.BigDecimal类,查阅JDK帮助文档或教材p378,对上述程序进行修改。
结果为:不等于0.3

更改

package 临时;
import java.math.BigDecimal;
public class 临时 {
    public static void main(String args[]) { 
        double a = 0.1;
        double b = 0.1;
        double c = 0.1;
        if(add(a,b,c)==0.3){
            System.out.println("等于0.3");
        }
        else {
            System.out.println("不等于0.3");
        }
    } 
    public static double add(double d1,double d2,double d3){
    	BigDecimal b1=new BigDecimal(d1);
    	BigDecimal b2=new BigDecimal(d2);
    	BigDecimal b3=new BigDecimal(d3);
    	double b4=b1.add(b2).doubleValue();
    	BigDecimal b5=new BigDecimal(b4);
    	return b5.add(b3).doubleValue();
    }
    
}

4.本次学习要点中其他需要总结的内容:因人而异,根据自己的学习情况,记录难掌握或难理解的内容,以及学有心得的内容。还存在哪些问题,也可以提出来,对于同学在博客中提出的问题,大家可以积极讨论,互帮互学。
注释很重要,我没有这个习惯,结果很多时候会把变量搞混,浪费很多时间。我应该更加注意细节方面的问题,养成写程序的良好习惯!!
二,实验总结

1,猜价格
1)用

import java.util.Random;
Random rand=new Random();
sjs=rand.nextInt(101);

产生随机数,因为这个随机数会产生“0”,所以用“if”语句,如果产生“0”,在产生一个随机数,“0”被覆盖。
2)使用“for”循环,产生10次机会,在使用“if”,回答 猜大,猜小,猜中。如果猜中,使用“break”跳出循环。
问题:没有遇到什么问题
2,万年历
1)主程序
输出主菜单。使用while语句,可以循环。使用switch,选择选项。
2)判断闰年
使用if判断是否为闰年。条件为“(year%40&&year%100!=0)||year%4000”。
3)判断某年某月有多少天
先判断是否为闰年,在判断月有多少天,特别注意二月。我使用if语句判断的。
4)计算某年某月之前距离1900年1月1日的总天数
先判断距离1900年有多少普通年和闰年,普通年加365天,闰年加366天。在算月份的天数,道理跟年一样。
5)输出某年某月日历
用上面一个方法算出有多少天,跟7取余+1为该月一号星期几。
问题:
1】使用while循环时,想要 输入随机数继续,输入“*”结束 ,需要输入char类型,结果不能直接输入。
Java中不能直接输入char类型的值,可以用以下步骤输入:
1.先创建一个Scanner对象
2.调用Scanner对象的next()方法获取控制台输入,返回的是一个String类型,因为没有nextChar()方法
3.调用String的charAt(0)方法获取第一个字符

Scanner sc = new Scanner(System.in);
String s = sc.next();
char c = s.charAt(0);

2】输出日历时,不能对齐。
3,评分系统
1)先建立数组,在输入评分。我用的是for循环。
2)再用Arrays.sort()进行排序
3)输出排序后的评分。
4)去掉最高分和最低分,求出平均数。
问题:没有遇到什么问题。
三,代码托管

posted @ 2018-03-18 21:21  苦狂上  阅读(146)  评论(0)    收藏  举报