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类,