3.2 boolean 数据类型、值和表达式
boolean数据类型只有两个值:true, false
设计程序判断加法是否正确:
产生随机数:System.currentTimeMillis()%10; //产生第一个随机数
System.currentTimeMillis()/10%10; //产生第二个随机整数
public static void main(String[] args){
int number1 = (int)(System.currentTimeMillis() % 10);
int number2 =(int)(System.currentTimeMillis()/10 % 10);
Scanner input = new Scanner(System.in);
System.out.println("What is " + number1 + "+" + number2 + "?");
int answer = input.nextInt();
System.out.println(number1 + "+" + number2 + "=" + answer + " is " + (number1 + number2 == answer));
}
3.3 if语句
设计程序:判断一个数是否是2或5的倍数(若是5倍数:输出HiFive)(若是2倍数:输出HiEven)
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("Enter a integer:");
int n = input.nextInt();
if(n % 5 == 0)
System.out.println("HiFive");
if(n % 2 == 0)
System.out.println("HiEven");
}
3.6 常见错误
else总是很最近的if匹配;
两个浮点数的相等测试不可靠,例如:
double x = 1.0 -0.1-0.1-0.1-0.1-0.1
if(x == 0.5);
简化布尔变量赋值:boolean even = number % 2 == 0;
3.7产生随机数
可以使用Math.random()来获得一个0.0~1.0之间的随机double值
获得随机0-9之间的整数:(int)(Math.random() * 10);
3.10 逻辑操作符
! && || ^(值相同,结果为false;值不同,结果为true)
例:
if(number % 2 == 0 ^ numbr % 3 == 0)
System.out.println(number + "is divisible by 2 or 3, but not both");
德.摩根定律可用于简化布尔表达式:
!(condition1 && condition2)= !condition1 || !condition2
!(condition1 || condition2) = !condition1 && !condition2
&& 和 || 为惰性操作符
3.11 示例学习:判断闰年
public class leapYear {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("Enter a year:");
int year = input.nextInt();
boolean isLeapYear = (year % 4 == 0 && year % 100 != 0)||(year % 400 == 0);
System.out.print(year + " is a leap year ?" + isLeapYear);
}
}
3.12 示例学习:彩票
问题描述:涉及产生随机数、比较每一位数字、布尔操作符
程序随机产生一个两位数字的彩票,提示用户输入一个两位数(若是一个小于10的数,看作为0开头的两位数)
public class Lottery {
public static void main(String args[]){
//产生彩票 产生一个随机两位数
int lottery = (int)(Math.random()*100);
//获取用户输入
System.out.println("Enter yout lottery pick:");
Scanner input = new Scanner(System.in);
int guess = input.nextInt();
int lotteryDigit1 = lottery / 10;
int lotteryDigit2 = lottery % 10;
int guessDigit1 = guess / 10;
int guessDigit2 = guess % 10;
System.out.println("The lottery number is " + lottery);
//判断中奖情况
if(guess == lottery)
System.out.println("Exact match:you win $10000");
else if(guessDigit1 == lotteryDigit2 && guessDigit2 == lotteryDigit1)
System.out.println("Match all digits:you win $ 3000");
else if(guessDigit1 == lotteryDigit1 ||guessDigit1 == lotteryDigit2 || guessDigit2 == lotteryDigit1 || guessDigit2 == lotteryDigit2)
System.out.println("Match one digit:you win $1000");
else
System.out.println("no match");
}
}
3.13 switch语句
switch语句基于变量或者表达式的值来执行语句
语法:
switch(switch表达式){
case value1:语句(组)1;
break;
case value2:语句(组)2;
break;
case value3:语句(组)3;
break;
default:语句(组);
break;
}
switch表达式必须得到一个char,byte,short,int,String类型的值
value必须是常量(表达式),不能包含变量
switch表达式的值和case语句的值相匹配时,执行从该case开始的语句,直到遇到break或者switch语句的结尾
3.15操作符的优先级和结合规则
所有的二元操作符都是左结合的
赋值操作符时右结合的
左结合对赋值语句来说没有任何意义
3.16调试
JDK包含一个命令行调试器jdb(本身也是一个Java程序),该调试器使用类型进行调用。
本章完!!!!!