typora-copy-images-to: 笔记中有关截图
仅作为Java学习过程中知识点的记录
待更新。。。
if 语句是分支语句,也叫条件语句。
if(布尔表达式){ Java语句; Java语句; }
if(布尔表达式){ Java语句1; }else{ Java语句2; } //如果表达式值为true,执行语句1,否则实行语句2
if(布尔表达式1){ Java语句1;//当表达式1的值为true时,执行语句1;否则判断表达式2 }else if(布尔表达式2){ Java语句2;//当表达式2的值为true时,执行语句2;否则判断表达式3 }else if(布尔表达式3){ Java语句3;//当表达式3的值为true时,执行语句3;否则不执行 }
if(布尔表达式1){ Java语句1;//当表达式1的值为true时,执行语句1;否则判断表达式2 }else if(布尔表达式2){ Java语句2;//当表达式2的值为true时,执行语句2;否则判断表达式3 }else if(布尔表达式3) ··· else{ Java语句n;//当前面的表达式的值都为false时,执行语句n; }
Activities at Lake LazyDays
你在Lake LazyDays度假村的工作是按照天气状况给客人提供活动建议。以下是一个活动列表:
temp >= 80: swimming;
60 <= temp < 80: tennis;
40 <= temp < 60: golf;
temp < 40: skiing.1、编写一段程序,提示用户输入一个气温值,然后打印出适合该气温的活动。提示:使用if-else语句,并确保你的条件设定不必过于复杂。
2、修改程序,在temp>95或者temp < 20的情况下,打印“Visit our shops!"。提示:在条件表达式中使用布尔运算符。
import java.util.Scanner; public class LazyDays{ public static void main(String[] args){ //创建一个Scanner对象scan,用以获取用户从键盘输入的数据 Scanner scan = new Scanner(System.in); //声明一个int型变量temp int temp; while (scan.hasNextInt( )) { //提示用户输入今日气温 System.out.println("请输入今日气温:"); //将用户输入的气温赋值给temp temp = scan.nextInt( ); //用if语句判断当日气温,根据不同气温输出不同的游玩建议 if (temp > 95 || temp < 20) { //当气温temp高于95或低于20时,输出"Visit our shoops!" System.out.println("Visit our shops!"); } else if (temp >= 80) { //当温度temp不低于80时,输出"swimming" System.out.println("swimming"); } else if (60 <= temp && temp < 80) { //若temp不低于60时,输出"tennis" System.out.println("tennis"); } else if (40 <= temp && temp < 60) { //若temp不低于60时,输出"golf",否则输出"skiing" System.out.println("golf"); } else { //若以上条件都不满足,输出"skiing" System.out.println("skiing"); } } scan.close( ); } }
switch (表达式){ case 值1: 语句块1; break;//中断当前的switch语句 //当表达式的值为值2或值3时,执行语句块2 case 值2: case 值3: 语句块2; break; case ···: //当以上case语句的值都与表达式的值不相等时,执行false语句 default: 语句块n; }
注意:
(1)switch语句可以拥有多个case语句;
(2)表达式的值可以是整型或字符串型等(cahr、byte、int、short、boolean、String)或对应的包装类型;
(3)当表达式的值与case的值相等时,执行该case分支的语句块,并往下执行,直到遇到第一个break结束;
(4)如果没有break语句,程序一直往下执行,直到出现第一个break结束,或着执行到default分支结束。
(5)switch可以包含零个或一个default语句,一般default语句放在最后。
将学生的英文级别转换为中文等级分类:A为优秀,B和C为良好,D为及格,F为未通过,如果级别不再这个范围内将做超出范围提示。
import java.util.Scanner; public class Grade { public static void main ( String [ ] args ) { // 创建一个Scanner对象scan,用以获取用户从键盘输入的数据 Scanner scan = new Scanner(System.in); // 声明一个String型变量grade。 String grade; while (scan.hasNext( )) { // 提示用户输入层级等级 System.out.println("请输入你的成绩等级:"); // 将输入的学生成绩的英文等级赋值给grade中 grade = scan.next( ); // 用switch语句,根据不同气温输出不同的游玩建议 switch (grade) { case "A" : System.out.println("优秀"); break; case "B" : case "C" : System.out.println("良好"); break; case "D" : System.out.println("及格"); break; case "F" : System.out.println("未通过"); break; default : System.out.println("不在A~F范围中!"); } } scan.close( ); } }
Rock, Paper, Scissors
程序Rock.java是石头剪子布游戏的一个框架。将该程序保存至本地目录,按照提示补充程序语句。该程序允许用户输入一个项目,计算机随机产生一个项目,对两个项目对比,给出胜负结果。比如,程序可能以以下方式运行:
用户可以输入R, P, S或者r, p, s来表示石头,布,剪刀三个项目。用户输入的项目保存在字符串变量中,以便于大小写的转换。
使用一个switch语句将一个随机整数转换为游戏中计算机给出的项目。
很多情况下程序需要生成一定范围内的一个随机数。Java类库中的Random类为程序员提供了这样的功能,能够同时生成一系列的随机数。以下变量声明Random类型的变量generator,并使用new操作符进行初始化:
Random generator = new Random();
generator对象能够生成整型或者浮点型的随机数字,需要使用到nextInt方法或者nextFloat方法。nextInt()返回一个任意的整型随机数字,而nextInt(n)返回一个在0至n-1之间的随机整数。nextFloat()和nextDouble()返回0至1之间的一个浮点数。
假设需要生成30至99之间的整数,可以采用以下的方法:
- 使用nextInt():Math.abs(generator.nextInt())%70 + 30;
- 使用nextInt(70): generator.nextInt(70)+30;
- 使用nexFloat: (int)(generator.nextFloat()*70) + 30
加30,表示从30开始,一直到99,着100个数里随机取值。随机数默认从0开始随机取值。完成以下程序。该程序用于生成随机数字。注意需要把java.util.Random类导入程序。
import java.util.Scanner; import java.util.Random; public class Rock{ public static void main(String[] args){ //声明变量 String personPlay;//表示用户输入的值 String computerPlay = "";//表示计算机出的值 int randomInt;//随机数 //创建对象 Scanner scan = new Scanner(System.in); Random random = new Random(); //提示用户输入石头、剪刀或布 System.out.print("Enter your play: (R, P or S): "); //开始游戏 while(scan.hasNext()){ personPlay = scan.next().toUpperCase(); randomInt = random.nextInt(3); switch(randomInt){ case 0: computerPlay = "R"; break; case 1: computerPlay = "S"; break; case 2: computerPlay = "P"; break; } if(personPlay.equals(computerPlay)){ System.out.println("It's a tie."); }else if(personPlay.equals("R")){ if(computerPlay.equals("P")){ System.out.println("Paper covered stone.\n" + "Compueter wins, you failed!"); }else{ System.out.println("Rock crushes scissors.\n" + "You win!"); } }else if(personPlay.equals("S")){ if(computerPlay.equals("R")){ System.out.println("Rock crushes scissors.\n" + "Compueter wins, you failed!"); }else{ System.out.println("Sissors cut paper.\n" + "You win!"); } }else if(personPlay.equals("P")){ if(computerPlay.equals("S")){ System.out.println("Sissors cut paper.\n" + "Compueter wins, you failed!"); }else{ System.out.println("Paper covered stone.\n" + "You win!"); } }else if(personPlay.equals("E")){ //游戏结束 System.out.println("Game over! \n" + "Thank for playing!"); return; }else { //判断用户输错,提示重新输入正确字符 System.out.println("Error! Please enter: \"R\", \"S\" or \"P\"."); } System.out.print("\nEnter your play: (R, P or S): "); } scan.close(); } }
while(布尔表达式){ 语句块; }
当满足while的循环条件时,执行while里的语句块。同样,只有一条语句时可以不加“{ }”,为方便阅读,建议加“{}”。
do{ 语句块; }while(循环条件);
注意:
程序陷阱:
double num = 1.0;
while(num!= 0.0){
System.out.println(num);
num -= 0.1;
}
注意:num为浮点类型变量,直接进行四则运算时会出现精度丢失的现象。所以以上程序会进入死循环。要解决这个问题可以给定一个偏差值。
程序运行结果示例:
for(初始值;条件表达式;增值){ 语句块; }
注意:
鸡兔同笼问题。一个笼子中有若干只兔子和鸡,共有10个头,32只脚,求兔和鸡的数量。
package ForTest; public class ChookRabbit{ public static void main(String[] args){ int head = 10; int feet = 32; int sumRabbit; int sumChook; for(sumChook = 0; sumChook < 16; sumChook++){ //鸡兔的总数为10 sumRabbit = head - sumChook; //鸡有两只脚,兔子有四只脚,共有32只脚 if(sumRabbit * 4 + sumChook * 2 == feet){ System.out.println("There are " + sumRabbit + " rabbits and " + sumChook + " chooks in the cage."); } } } }
程序运行结果:
for(类型 变量: 数组或集合){ 语句块 }
注意:
(1)for-each 循环也称为“增强for循环”。是为了简化集合类、枚举和数组的迭代过程二提出的。
(2)关键字for后面的括号内有两个控制元素,之间用“ : ” 分隔。冒号前为变量及其类型,这里的变量也称为迭代器,在循环体内反复赋值;冒号后为需要遍历的数组或集合。要求,变量的类型需与需要遍历的数组或集合内的元素类型一致。
程序运行结果示例:
Factorials
n的阶乘(n!)表示整数从1到n的乘积。比如,4!=123*4=24。另外,0!=1。阶乘不适用于负数。1、编写一段程序,请用户输入一个非负整数,然后打印该整数的阶乘。请使用while循环语句编写程序。请考虑用户输入0的情况。
2、修改程序,检查用户是否输入非负整数。如果输入的负数,则提示用户输入非负整数,并请用户重新输入,直到用户输入非负整数为止。
import java.util.Scanner; public class Factorials{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); int n; int factories; System.out.println("Please enter a number:"); while(scan.hasNext()){ n = scan.nextInt(); factories = 1; if(n<0){ //负数没有阶层 System.out.println("Error!"); }else if(n == 0){ //0! = 1 System.out.println(n + "! = 1"); }else{ //输出格式 n! = 1 * 2 * ··· * n = ··· System.out.print(n + "! = 1"); for(int i = 1; i <= n; i++){ //计算阶层 factories *= i; if(i > 1){ System.out.print(" * " + i); } } //输出最终结果,并换行 System.out.print(" = " + factories + "\n"); } //提示用户输入数字 System.out.println("Please enter a number:"); } scan.close(); } }
Java中的中断语句包括:return、break和continue,都用于执行循环的结束
return语句