Java第一次作业

1.在java中通过Scanner类完成控制台的输入,查阅JDK帮助文档,Scanner类实现基本数据输入的方法是什么?不能只用文字描述,一定要写代码,通过具体实例加以说明。
import java.util.Scanner; //声明Scanner类
Scanner (balabala) = new Scanner(System.in); //分配空间
int i = (balabala).nextInt(); /*
btye b = (balabala).nextByte(); 实
short s = (balabala).nextShort(); 际
long l = (balabala).nextLong(); 输
double d = (balabala).nextDouble(); 入
String str = (balabala).next(); */

    2.Random类和Math类的random()方法都能产生随机数,这两种方式有什么区别,各有什么特点呢?查阅JDK帮助文档,并举例加以说明。

Random类:Random类中实现的随机算法是伪随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同随机种子在相同的随机次数中产生的随机数是一样的。
Math类:返回带正号的 double 值,该值大于等于 0.0 且小于 1.0
public class RandomNum{
public static void main(String[] args){
Random r1 = new Random(100);//第一个Random对象r1,随机种子100
Random r2 = new Random(100);//第二个Random对象r2,随机种子100
System.out.println( " r1产生的值:" + r1.nextInt());
System.out.println( " r2产生的值:" + r2.nextInt());
System.out.println("Math.random产生的值:"+(int)(Math.random()*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");
}
}
}

结果为,不等于0.3。
原因分析:Java的简单类型不能够精确的对浮点数进行运算。 通常需要创建其他方法,来进行精密计算
源程序修改版
import java.math.BigDecimal;
import org.omg.CORBA.PUBLIC_MEMBER;
public class Test {
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( Double.toString(d1) );
BigDecimal b2 = new BigDecimal( Double.toString(d2) );
BigDecimal b3 = new BigDecimal( Double.toString(d3) );
return b1.add( b2 ).add( b3 ).doubleValue();
}
}

4:
第一章
Java由编译(Javac.exe)和解释(Java,exe)两部分组成
一个Java程序的形成:Java源文件(.Java)通过编译(Javac.exe)形成字节码文件(.class),再将字节码文件(.class)通过解释(Java.exe)生成机器码指令(10101100)再由机器去执行。
1.2 JDK JRE JVM
JDK:开发工具包
JRE:运行环境
JVM:Java虚拟机
1.3 Hello Java
编译源文件时需带上.java的后缀
解释成字节码文件时无需加任何后缀
编译解释时需输入主类的名字
有Public类class保存文件命名时,必须与Public class类名字一样
无Public类class保存文件命名时,不要求与class类名字一样

             cd..  返回上一级目录
             cd  返回磁盘根目录
             dir   查看当前目录
              c:  进入c盘
  1.4 classpath和path
             Classpath:解释时,字节码文件的路径
             Path:编译时,编译器命令的路径
                                              第三章
  3.1 C基本数据类型和Java基本数据类型的区别
            大致相同   
            Java中的float赋值时需在末尾加上F或f,而double的D则可以省略
            Java中多出一个boolean类型,只有两种值,ture或false
            Java中每个基本数据类型都有自己的包装类,从而提供一些可以直接调用的静态方法
  3.2 Integer
             Integer是int的包装类   每个基本数据类型都有自己的包装类。(除int外,其余包装类形式为大写首字母)
             提供了一些可以直接调用的静态方法。
             Integer最大的作用在于字符串与整型上的转换,还具有自动拆箱与装箱的功能。
            书中提到的Integer.MAX_VALUE必须大写
            Int Max=Integer.MAX_VALUE   //求int型数据的最大值
   3.3 Unicode编码 字符常量和字符串常量的定界符
           Unicode编码类似于C中的ASII编码;
           字符常量:用‘A’
           字符串常量:用“A”
   3.4 float与double的比较
           与C中大致类似
           但float赋值时需在末尾加上F或f,而double的D则可以省略
           如果在声明float时没有加上f,在编译时会提示可能丢失精度。
   3.5 任何类型的值都向String转型
                            ???
   3.6 a++与++a
            A++:先将a值用于计算,再将a自增
            ++a:先将a值自增,再将a值用于计算
   3.7  &&与 &   ||与 |
            1:在判断过程中,第一个条件值为false,且为&&则停止判断, 
            2:在判断过程中,第一个条件值为true时,且为||则停止判断, 
   3.8
              C语言中没有boolean 需要自己定义。0为假 非0为真
              Java中,boolean值只有两种,true或false
    3.9
               三目运算符    ?:
               问号左边的判断语句成立成立,则选择冒号左边的值,反之,则选择右边的
   4.0 位运算
                &(按位与):相同位上数字都是1,则结果为1,否则结果为0;
                ||(按位或): 相同位上数字存在1,则结果为1,否则结果为0;
                ^(按位异或):相同位上数字不同,则结果为1,否则结果为0。
                异或逆运算为异或。
   4.1
                 If  else if, 下一个else if紧接在上一个else if的 } 后面
                 即:  if() {
                 } else if {
                  	  ………
                 } else {
                 }
                Switch 语句
                Switch() {

                     Case 语句1: balabala; break;
                     Case 语句2: balabala; break;
                      ……..
                     Defualt : balabalabala;
                 }

                While 与 Do …While 语句没有大变化



     4.2 数组(名为数组,实为指针)
                声明数组
                         类型 [ ] 数组名;           int [ ] a;  也可以像C那样声明 int a[ ];
                         [ ]中不能加数字;   可以在声明时赋为null。
                创建数组
                          数组名 = new 类型 [数组长度];
                          数组名 = new 类型 [ ] { 数组要存储的数值,用逗号隔开 }
                          举个栗子:
                           int[ ] i=new int[5];
                           int[ ] i=new int[]{0,1};
                           int[ ] i={0,1};   

                 数组的单元(元素)
                        A[0]~~~A[数值-1]
                 数组长度
                        一维数组    数组名.length        System.out.println(数组名.length);
                        二维数组	数组名.length			实际长度为该二维数组中一维数组的个数
                        二维数组的本质就是行数个长为列数的一维数组
                 数组的初始化
                            类型  [ ] 数组名 = { , , , };
                            一维数组: int  [ ] A = { 1,2,3,4,5}
                            二维数组: int  [ ]  [ ] S = { { 1,2,3},{ 2354,55,,36,6,}  }
                 数组的引用
                        数组变量本身存放的值称作数组的引用
                        数组使用下标运算访问自己的单元
                        两个类型相同的数组,一旦二者具有相同的引用,那么二者具有一样的单元。

实验总结:
1:随机价格
让对象输入要猜的价格。让输入的价格与真实价格进行比较,对比较结果进行记录,若猜对,则为flag = 1,并输出用户得分. 否则为0;并让用户选择是否进行下一步。若达到上限仍未猜对,则终止用户输入权限,直接输出商品价格。
问题:用户第五次猜对退出程序和达到上限猜错被迫退出程序,如何进行分辨?
解决: FLAG =1 的标志符
2:万年历
以前用C写过,没什么大问题。在方法的定义上与老师要求有出入。
先判断平闰年 由此,程序进入平闰年分支
再判断从1900年打到该月份前有多少天。 此处定义两个方法,平闰年分开判断,下个步骤同理
接着判断该月份有多少天。
判断该月份第一天是周几。
剩下的就是慢慢调整输出格式
3:选手成绩
问题:选手成绩的存储,选手平均成绩的存储
解决:评委对选手成绩用二维数组存储, 平均成绩则另行定义一个一维数组
Arrays类。 第一个用到的Java类,


原文地址:https://www.cnblogs.com/yanchao980817/p/8597695.html