• JAVA第一次作业


    (一)学习总结

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

    import java.util.Scanner;
    public class Test {
    
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
    
            Scanner rand = new Scanner(System.in);
            int shu = rand.nextInt(); 
            System.out.println("你输入的是:"+shu);
        }
    
    }
    
    Scanner 的头文件为import java.util.Scannner,主函数里再用Scanner声明,就可以调用了。 首先创建一个Scanner对
    象rand,构造函数的初始值为System.in,再利用rand.nextInt()来接收一个int型数据shu的值。 字符串类型遇到空格或者
    回车就结束输入, 需要用到nextline()
    

    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对象,第一次生成的随
    数字完全相同,第二次生成的随机数字也完全相同。如 Random rand = new Random();a = rand.nextInt(100)+1;生成1-100的随机数

    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,对上述程序进行修改。

    import java.math.BigDecimal;
    import java.math.MathContext;
    public class Test {
           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");
                }
            }
        }
    

    (二)实验总结
    实验内容:
    1.看商品猜价格
    思路:1.产生随机数,范围在100之内;2.输入猜的数据与随机数进行比较,输出猜大了或者猜小了或者数输出随机数和猜
    了多少次猜对的;3.用数组和FOR循环
    问题:不会用输入;
    解决方案:用头文件import java.util.Scanner;,主函数里再用Scanner声明, 首先创建一个Scanner对
    象rand,构造函数的初始值为System.in,再利用rand.nextInt()来接收一个int型数据shu的值。

    2.万年历
    思路:1.闰年的判断方法为((year%40&&year%100!=0)||year%4000);2.用if语句分类实现输出该月的天数;
    3.求该年该月之前到1900.1.1的天数,分别判断1900年到该年的每一年,如果是闰年天数加366,如果是平年天数加365;
    判断该年该月之前每个月的天数,可以调用第二个函数,得到所求总天数;
    4.输出该月日历1+(totalDays(year,month)+n)%7为判断该月第一天为星期几(调用第三个函数,n为这个歌月的天数),
    用循环输出空格,根据星期几控制换行;
    5.在主函数里调用方法,得出所求
    问题1:输出日历时每个号占一行
    原因:用的是System.out.println();
    解决方案:应该用用的是System.out.print();
    问题2:日历输出不对
    原因:总天数没有加上该月的天数
    解决方案:调用第三个方法并加入该月天数 再求。

    3.评分系统
    思路:用数组存储评委打的分数, 利用循环找到最大值最小值,总分减去最大分最小分 ,求出平均值为最后得分,调用排序函数最后输出。
    实验问题分析:
    问题:最后输出的值不对
    原因:for循环从1开始的,少算了
    修改:循环从0开始

    (三)代码托管

    码云提交历史截图
    上传实验项目代码到码云,在码云项目中选择“统计-提交”,设置搜索时间段,搜索本周提交历史,并截图。

  • 相关阅读:
    [转]How can I create a design netlist without including my source design files?
    [转]基于FPGA的以太网开发
    [转]GMII/RGMII/SGMII/TBI/RTBI接口信号及时序介绍
    [原]Altium画PCB时鼠标十字不能对准焊盘中心
    [转]Altera特殊管脚的使用(适用全系列Altera FPGA,MSEL区别除外)-来自altera论坛
    [转]STM32正交编码器驱动电机
    [转]使用D触发器制作正交编码器的鉴相电路
    [转]解决STM32开启定时器时立即进入一次中断程序问题
    [转]ISE iMPACT bit生成mcs
    [转]NiosII处理器软件代码优化方法
  • 原文地址:https://www.cnblogs.com/zhao-1184346113/p/8596691.html
Copyright © 2020-2023  润新知