• ##Java作业1


    (一)学习总结
    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对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同。

    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 因为有误差 ,浮点数精度丢失,二进制的存储数据不能完整的表示0.1 最后结果比0.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<1e-6)
                {
                System.out.println("等于0.3");
            }else {
                System.out.println("不等于0.3");
            }
        }     
    }
    

    4.学习总结: Java和c语言结构类似 语句不同 写代码的时候要分清语句适用的环境。
    输出有两种形式:一种是System.out.println();一种是System.out.printf();前者用与字符的输出 输出后换行,后者跟C语言的输出类似。
    输入也不在用scanf ,通过Scanner类
    (二)实验总结
    实验内容:
    1.看商品猜价格
    思路:先给价格附用一个定值 在利用for循环重复输入价格进行判断,使用if判断,如果相等,使用break跳出循环,输出猜了多少次;如果不相等 输出猜大了猜小了;如果10次没有猜对,输出正确价格。 最后利用产生随机数传给价格。
    实验问题分析:
    问题:输出有问题
    原因:当猜对后没有结束循环
    修改:在猜对语句后加 break;
    2.万年历
    思路:根据之前写的c语句改成java用的语句,把c语言的函数写成方法,然后再调用方法。还要判断用户输入的年份是否是闰年,计算出距1990年有多少年判断每年的天数并通过用户输入的月份,把天数累加计算出距1990年1月1日有多少天,之后计算月初对应的星期,最后按格式输出。
    实验问题分析:
    问题:输出的格式不对应
    原因:之前c用的空格,在Java里不适用
    修改: 改成" "

    3.评分系统
    思路:利用二位数组存储随机数产生的评委打的分数, 利用循环找到最大值最小值,再把所有评分的和减去最大分最小分 ,求出平均值存到平均数的数组,调用排序函数 最后输出。
    实验问题分析:
    问题:最后输出的平均数为负值
    原因:sum减去最大数和最小数的语句位置放错位置
    修改:把减去最大数和最小数的语句放在循环外边
    排序排反后 反向输出。 求平均数时sum/8 需要强制类型转换。因为平均数数组为float型

    (三)代码托管

  • 相关阅读:
    浅谈数据结构之KMP(串中的模式匹配算法)
    electron 使用serialport串口库
    electron-builder 打包时下载 winCodeSign和nsis缓慢解决方法
    【SQL / MySQL】Hierarchical Queries (层级结构查询)
    delphi MSSQL表类型传参
    DevExpress ComboboxEdit绑定key value值
    devexpress gridControl1导出为pdf文件时出现 中文乱码的解决方案
    DevExpress的GridControl控件设置自定义显示方法
    Reactive Spring实战 -- 响应式MySql交互
    Reactive Spring实战 -- 响应式Kafka交互
  • 原文地址:https://www.cnblogs.com/wjm666/p/8586272.html
Copyright © 2020-2023  润新知