zoukankan      html  css  js  c++  java
  • 《Java技术》第一次作业

    (一)学习总结

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

    Scanner类实现基本数据输入方法:
    <1>添加java.util.Sanner到程序中
    <2>用Sanner类定义一个对象,通过此对象的属性来实现对数据的输入,如:Sannner input = new Sanner(System in);(System in,是指从键盘上输入)
    实例:

    import java.util.Scanner;
    
    public class Test {
        public static void main(String args[]) { 
        	String gchar1 = new String();
        	String gchar2 = new String();
        	Scanner input = new Scanner(System.in);
        	System.out.println("nextLine方式接收:");
        	gchar1=input.nextLine();
        	System.out.println("next方式接收:");
        	gchar2=input.next();
        	System.out.println(gchar1+"
    "+gchar2);
        }     
    }
    

    运行结果:

    2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。
    区别:
    <1>Random是类(java.util.Random),里面有很多方法,而random()是Math类中的一个方法
    <2>Math类的random()方法产生的随机数是[0,1.0)之间的小数
    Math类的random()方法的特点:
    <1>Random类可以直接利用其方法生成随机数,并分为指定种子数字和默认构造方法两种;
    <2>Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值,若要用此方法产生0~100的随机数需要对random()方法产生的随机数进行放大倍数再进行改变(注意:此时的随机数仍是double的,如要int类型还需要强制转换)
    <3>Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率是均等的
    实例:

    import java.util.Scanner;
    import java.util.Random;
    public class Test {
        public static void main(String args[]) { 
        	Random rand = new Random();
        	int temp1,temp2,temp3;
        	temp1=rand.nextInt();
        	temp2=rand.nextInt(101);//0~100间 的随机数
        	temp3=(int)(Math.random()*100+1);
        	System.out.println("使用Random类随机产生一个整型的数:"+temp1);
        	System.out.println("使用Random类产生一个[0,100]的随机数:"+temp2);
        	System.out.println("使用Math类的random()方法产生一个[0,100]之间的随机整数"+temp3);
        }     
    }
    

    运行结果:

    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
    原因:在运算时精度损失,从而产生了极小的误差,于是出现错误
    改进:

    import java.math.BigDecimal;
    import java.math.MathContext;
    public class Test {
        public static void main(String args[]) { 
            BigDecimal ia = new BigDecimal("0.1");
            BigDecimal ib = new BigDecimal("0.1");
            BigDecimal ic = new BigDecimal("0.1");
            if((ic.add(ia.add(ib))).round(new MathContext(1)).equals(new BigDecimal("0.3"))){
                System.out.println("等于0.3");
            }else {
                System.out.println("不等于0.3");
            }
        }     
    }
    

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

    (二)实验总结

    实验内容:
    1.看商品猜价格
    程序设计思路:
    <1>先设置一个循环来控制用户是否继续游戏,初始判断定义为yes
    <2>利用Random类生成一个0~100的随机数
    <3>让用户输入价格
    <4>共猜五次猜对了给出得分,猜错了继续,满五次后给出正确答案,得分为0分
    问题<1>:内层控制用户猜的次数的循环令输入出现了6次
    原因:忽略了内层循环外的第一条输入语句
    解决方法:令循环变量初始值=1
    2.万年历
    程序设计思路:
    <1>判断是否为闰年
    <2>计算某个月有多少天(闰年二月29天,平年28天)
    <3>计算总天数分为当用户指定的年份大于1900年时和年份小于1900年时两种情况,令循环变量等于较小的年份,判断当前年份是否等于较大的年份,不等于则判断循环变量是平年还是闰年,平年+365,闰年+366,并且循环变量++,计算完年的总天数后计算用户指定年月的总天数,同理于计算年的天数,最后得到总天数。
    <4>在打印日历的方法中调用总天数的方法赋值给一个整型变量如 sum,sum%7+1 即为当前年份当前月份第一天是周几
    <5>主方法调用即可
    问题<1>:在得知当前月份是周几后无法令其前面出现空格
    解决方法:
    <先让循环变量循环到today,每次输出一个空格和' ',结束循环。令time=today,每次循环time都++,判断time是否=7,等于7则换行同时time=0
    3.评分系统
    程序设计思路:
    <1>在求最大值的方法里定义max数组记录每个选手的最高分,并返回max数组,求最小值同理
    <2>求平均分时调用每个选手的最小值和最大值并减去,最后令sum/8返回平均分数组
    <3>对平均分排序,列出选手的名次和得分
    问题<1>:最小值数组和最大值数组中存储的数据有误
    原因:忽略了max是一个数组,只定义了max[0]=score[0][0],并放在了循环外面,所以出错
    解决方法:max[0]=score[i][0],放在循环中
    (三)代码托管

  • 相关阅读:
    VC++实现感染文件式加载DLL文件
    vC++实现遍历桌面和快速启动里的所有快捷方式,判断快捷方式是不是浏览器,如果是则删除快捷方式参数
    VC++另类实现进程插入
    云服务系列:Windows Azure SDK for .NET(2012 年 6 月发布的版本)的最新消息
    VC++1.5K字节实现下载并远程注入
    上海求职指南 (最新版)
    WinAPI: GetWindowText 获取窗口标题
    WinAPI: SetCursorPos 设置鼠标指针位置
    WinAPI: SetComputerName 更改计算机名称
    GDI+ 学习记录(31): 图像颜色变换(TGPImageAttributes)
  • 原文地址:https://www.cnblogs.com/lmlmlm/p/8594050.html
Copyright © 2011-2022 走看看