Java学习笔记(四)

选择

选择语句要采用boolean表达式的条件,布尔表达式是计算结果为Boolean值:true或false的表达式。

boolean数据类型

Java提供六种关系操作符(也叫比较操作符)用于两个值的比较。
在这里插入图片描述
比较结果是一个布尔值:true或false。例如:double radius = 1; System.out.println(radius > 0); 的输出结果是true。
具有布尔值的变量称为布尔变量(boolean variable),boolean数据类型用域声明布尔型变量。
例如:boolean lights0n = true;
true和false都是直接量,就像10一样。他们都是保留字。

package demo;
import java.util.*;
public class AdditionQuiz {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int number1 = (int)(System.currentTimeMillis() % 10);
		int number2 = (int)(System.currentTimeMillis() / 7 % 10);
		Scanner input = new Scanner(System.in);
		System.out.print("What is " + number1 + " + " + number2 + "? ");
		int answer = input.nextInt();
		System.out.println(number1 + " + " + number2 + " = " + answer + " is" + (number1 + number2 ==answer));	
	}
}

if语句

if语句是一个结构,允许程序确定执行的路径。
Java提供的选择语句:单分支if语句、双分支if-else语句、嵌套if语句、多分支if-else语句、switch语句和条件表达式。
单分支if语句是指当且仅当条件为true时执行一个动作。
if (布尔表达式){
语句(组);
}
在这里插入图片描述
布尔表达式应该用括号括住,

if i>0{										if (i>0){
	System.out.println("i is positive");		System.out.println("i is positive");	
}											}

如果花括号内只有一条语句,则可以省略花括号。

package demo;
import java.util.Scanner;
public class SimpleIfDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("Enter an integer: ");
		int number = input.nextInt();
		if (number % 5 == 0){
			System.out.println("HiFive!");
		}
		if (number % 2 == 0){
			System.out.println("HiEven!");
		}
	}
}

双分支if-else语句:if(布尔表达式){
布尔表达式为真时执行的语句(组);
}
else{
布尔表达式为假时执行的语句(组);
}
在这里插入图片描述

嵌套的if语句和多分支if-else语句

if或if-else语句中的语句可以是任何合法的Java语句,甚至可以是其他的if或if-else语句。内层if语句称为嵌套在外层if语句里的。内层if语句还可以包括其他的if语句,且对嵌套深度没有限制。

if (i > k){
	if (j > k)
		System.out.println("i and j are greater than k");
	}
else{
	System.out.println("i is less than or equal to k");
}

if ( j > k)被嵌套在语句if( i > k)内,嵌套的if语句可用于实现多重选择。
在这里插入图片描述

常见的错误和陷阱

1.忘记必要的括号。花括号必须成对匹配。
2.if行出现错误的分号。分号一旦出现就意味着这个判断语句已经结束了,这和Pyrhon的if后面需要一个冒号还是不一样的。
3.对布尔值的冗余测试。如if(even == true)其实可以写成if(even)
4.悬空else出现歧义。会导致计算机无法判断那几个if、else是匹配的。
5.两个浮点数值的相等测试。浮点数具有有限的计算精度,涉及浮点计算可能引入取整错误。因此浮点数值的相等判断测试并不一定可靠。
double x = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1;
System.out.println(x == 0.5);
输出的就是false。因为x并不是精确的等于0.5,而是0.50000000000000000000000000000001。
但是虽然不能依赖两个浮点数值的相等测试,但是可以通过测试两个数的差距小于某个阈值,来比较他们是否已经足够接近。通常用10的-14次方来比较两个doule类型的值,而设为10的-7次方来比较float类型的值。

		final double EPSILON = 1E-14;
		double x = 1.0-0.1-0.1-0.1-0.1-0.1;
		if (Math.abs(x - 0.5) < EPSILON)
			System.out.println(x + " is approximately 0.5");

简化布尔变量赋值:

if (number % 2) == 0			更好的		
	even = true;			=======>>>>>>>	boolean even = number % 2 == 0;
else
	even = flase;

产生随机数

可以使用Math.random()来获得一个0.0到1.0之间的随机double值,不包含1.0。

		double ran_1 = Math.random();
		System.out.println((int)(10*ran_1));
import java.util.Scanner;
public class SubtractionQuiz {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int number1 = (int)(10 * Math.random());
		int number2 = (int)(10 * Math.random());
		
		if (number1 < number2){
			int temp = number1;
			number1 = number2;
			number2 = temp;
		}
		System.out.println("What is  " + number1 + " - " + number2 + "?");
		Scanner input = new Scanner(System.in);
		int answer = input.nextInt();
		
		if(number1 - number2 == answer)
			System.out.println("You are correct!");
		else{
			System.out.println("You answer is wrong.");
			System.out.println(number1 + " - " + number2 + " should be" + (number1 - number2));
		}
	}
}

Java中生成从n的随机整数,即返回值 [0,n] 的格式为:(int)(Math.random() * (n+1));
Java中生成a到b的随机整数,即返回值 [a,b] 的格式为:(int)(Math.random() * (b - a + 1));

计算身体质量指数

package demo;
import java.util.Scanner;
public class ComputeAndInterpretBMI {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner input = new Scanner(System.in);
		System.out.println("Enter weight in pounds: ");
		double weight = input.nextDouble();
		System.out.println("Enter height in inches: ");
		double height = input.nextDouble();
		
		final double KILOGRAMS_PER_POUND = 0.45359237;
		final double METERS_PER_INCH = 0.0254;
		
		double weightInKilograms = weight * KILOGRAMS_PER_POUND;
		double heightInMeters = height * METERS_PER_INCH;
		double bmi = weightInKilograms / (heightInMeters * heightInMeters);
		
		System.out.println("BMI is " + bmi);
		if (bmi < 18.5)
			System.out.println("Underweight");
		else if (bmi < 25)
			System.out.println("Normal");
		else if (bmi < 30)
			System.out.println("Overweight");
		else
			System.out.println("Obese");
	}
}

操作符的优先级和结合规则
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值