Java中定义成员变量时采用合法的前向引用。如: public class Test{ int num1 = 12; int num2 = num1 + 2; } 错误形式: public class Test{ int num2 = num1 + 2; int num1 = 12; }
if 语句的三种格式: 分支结构:if-else使用说明
条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量语句块只有一条执行语句时,一对{}可以省略,但建议保留if-else语句结构,根据需要可以嵌套使用当if-else结构是“多选一”时,最后的else时可选的,根据需要可以省略当多个条件是“互斥”关系时,条件判断语句以及执行语句间顺序无所谓,当多个条件时“包含”关系时,“小上大下/子上父下” /* 岳小鹏参加Java考试,他和父亲岳不群达成承诺: 如果: 成绩为100分时,奖励一辆BMW; 成绩为(80,99]时,奖励一台iphone xs max; 当成绩为[60,80]时,奖励一个 iPad; 其它时,什么奖励也没有。 请从键盘输入岳小鹏的期末成绩,并加以判断 说明: 1.else结构是可选的。 2.针对于条件表达式: 如果多个条件表达式之间是“互斥”关系(或没有交集的关系), 哪个判断和执行语句声明在上面还是下面无所谓。 如果多个条件表达式之间有交集的关系,需要根据实际情况, 考虑清楚应该将哪个结构声明在上面。 如果多个条件表达式之间有包含的关系,通常情况下,需要 将范围小的生命在范围大的上面,否则,范围小的就没机会 执行了。 */ import java.util.Scanner; class IfTest{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入岳小鹏的期末成绩:(0-100)"); int score = scan.nextInt(); if(score == 100){ System.out.println("奖励一辆BMW"); } else if (score > 80 && score <=99){ System.out.println("奖励一台iphone xs max"); } else if (score >= 60 && score <= 80){ System.out.println("奖励一台ipad"); } else { System.out.println("没有奖励!"); } } } /* 编写程序:由键盘输入三个整数分别存入变量num1、num2、num3, 对它们进行排序(使用 if-else if-else),并且从小到大输出。 说明: 1.if-else结构是可以相互嵌套的 2.如果if-else结构中的执行语句只有一行时,对应的一对{}可以省略,但是!不建议大家省略! */ import java.util.Scanner; class IfTest2{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入第一个整数:"); int num1 = scan.nextInt(); System.out.println("请输入第二个整数:"); int num2 = scan.nextInt(); System.out.println("请输入第三个整数:"); int num3 = scan.nextInt(); if(num1 > num2){ if(num3 > num1){ System.out.println(num2 + "," + num1 + "," + num3); } else if(num3 < num2){ System.out.println(num3 + "," + num2 + "," + num1); } else { System.out.println(num2 + "," + num3 + "," + num1); } } else { if(num3 > num2){ System.out.println(num1 + "," + num2 + "," + num3); } else if(num3 < num1){ System.out.println(num3 + "," + num1 + "," + num2); } else{ System.out.println(num1 + "," + num3 + "," + num2); } } } } class IfExer{ public static void main(String[] args){ int x = 4; int y = 1; if (x > 2) if (y > 2) System.out.println(x + y); //System.out.println("atguigu"); else//就近原则 System.out.println("x is " + x);//这个是输出结果 } } /* 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出 一定的条件:高:180cm以上;富:财富1千万以上;帅:是。 1.如果这三个条件同时满足,则:“我一定要嫁给他!!!” 2. 如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。” 3.如果三个条件都不满足,则:“不嫁!” */ import java.util.Scanner; class IfExer1{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入身高:"); int height = scan.nextInt(); System.out.println("请输入财富(千万):"); double money = scan.nextDouble(); System.out.println("请输入是否帅:(true/false)"); boolean isCool = scan.nextBoolean(); if(height >= 180 && money >= 1 && isCool){ System.out.println("一定嫁!"); } else if(height >= 180 || money >= 1 || isCool){ System.out.println("嫁吧~"); } else { System.out.println("不嫁!"); } } }switch语句有关规则
switch(表达式)中表达式的值必须是下述几种类型之一:byte、short、char、int、枚举(JDK5.0)、String(JDK7.0)case子句中的值必须是常量,不能是变量名或不确定的表达式值同一个switch语句,所有case子句中的常量值互不相同break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有break语句,程序会顺序执行到switch结尾default子句是可任选的,同时,位置也是灵活的,当没有匹配的case时,执行default /* 对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。 说明: 如果switch-case结构中的多个case的执行语句相同,则可以进行合并。 */ class SwitchCaseTest1{ public static void main(String[] args){ int score = 78; //这种方法不靠谱 /*switch(score){ case 0: case 1: case 2: …… case 100: }*/ switch(score/10){ case 0: System.out.println("不及格"); break; case 1: System.out.println("不及格"); break; case 2: System.out.println("不及格"); break; case 3: System.out.println("不及格"); break; case 4: System.out.println("不及格"); break; case 5: System.out.println("不及格"); break; case 6: System.out.println("及格"); break; case 7: System.out.println("及格"); break; case 8: System.out.println("及格"); break; case 9: System.out.println("及格"); break; case 10: System.out.println("及格"); break; } //对以上代码进行改写 switch(score/10){ case 0: case 1: case 2: case 3: case 4: case 5: System.out.println("不及格"); break; case 6: case 7: case 8: case 9: case 10: System.out.println("及格"); break; } switch(score/60){ case 0: System.out.println("不及格"); break; case 1: System.out.println("及格"); break; } } } /* 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序 输出输入的日期为2019年的第几天。 说明:break在switch-case结构中是可选的。 */ import java.util.Scanner; class SwitchCaseTest2{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入2019年的month:"); int month = scan.nextInt(); System.out.println("请输入2019年的day:"); int day = scan.nextInt(); //定义一个变量来保存总天数 int sumDays = 0; //方式一:代码冗余,不推荐 /*if(month == 1){ sumDays = day; } else if(month == 2){ sumDays = 31 + day; } else if(month == 3){ sumDays = 31 + 28 + day; } else if(month == 4){ sumDays = 31 +28 + 31 + day; } //…… else{ sumDays = …… + day; }*/ //方式二:冗余 /*switch(month){ case 1: sumDays = day; break; case 2: sumDays = 31 + day; break; case 3: sumDays = 31 + 28 + day; break; ... }*/ switch(month){ case 12: sumDays += 30; case 11: sumDays += 31; case 10: sumDays += 30; case 9: sumDays += 31; case 8: sumDays += 31; case 7: sumDays += 30; case 6: sumDays += 31; case 5: sumDays += 30; case 4: sumDays += 31; case 3: sumDays += 28; case 2: sumDays += 31; case 1: sumDays += day; } System.out.println(month + "月" + day + "号" + "是2019年的第" + sumDays + "天"); } } /* 从键盘分别输入年、月、日,判断这一天是当年的第几天 注:判断一年是否是闰年的标准: 1)可以被4整除,但不可被100整除 或 2)可以被400整除 说明: 1.凡是可以使用switch-case的结构,都可以转换为if-else,反之不成立 2.当我们写分支结构时,发现既可以使用switch-case又可以使用if-else 结构时(switch中的case取值情况不多),优先选择使用switch-case结构。 原因:switch-case相比于if-else结构效率稍微高一点。 */ import java.util.Scanner; class SwitchCaseExer{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请输入year:"); int year = scan.nextInt(); System.out.println("请输入month:"); int month = scan.nextInt(); System.out.println("请输入day:"); int day = scan.nextInt(); //定义一个变量来保存总天数 int sumDays = 0; switch(month){ case 12: sumDays += 30; case 11: sumDays += 31; case 10: sumDays += 30; case 9: sumDays += 31; case 8: sumDays += 31; case 7: sumDays += 30; case 6: sumDays += 31; case 5: sumDays += 30; case 4: sumDays += 31; case 3: //sumDays += 28; //判断闰年 if((year%4==0 && year0!=0) || (year@0==0)){ sumDays += 29; } else { sumDays += 28; } case 2: sumDays += 31; case 1: sumDays += day; } System.out.println(year + "年" + month + "月" + day + "号" + "是2019年的第" + sumDays + "天"); } }switch和if语句的对比 if和switch语句很像,具体什么场景下应用哪个语句呢? ① 如果判断的具体数值不多,而且符合byte、short、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。 ② 其他情况:对区间判断,对结果为boolean类型判断,使用if,if的使用范围更广。也就是说,使用switch-case的都可以改写为if-else,反之不成立。
循环语句综合例题
/* 从键盘读入个数不确定的整数,并判断读入的正数和负数的个数,输入 为0时结束程序。 最简单“无限” 循环格式:while(true) , for(;;),无限循环存在的原因是并不 知道循环多少次,需要根据循环体内部某些条件,来控制循环的结束。 说明: 1.不在循环条件部分限制次数的结构:for(;;) 或 while(true) 2.结束循环有几种方式? 方式一:循环条件部分返回false 方式二:在循环体中执行break */ import java.util.Scanner; class ForWhileTest{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("请随机输入一组正负数:"); int positiveNum = 0;//记录正数个数 int negativeNum = 0;//记录负数个数 for(;;){//while(true){ int num = scan.nextInt(); if(num > 0){ positiveNum++; } else if(num < 0){ negativeNum++; } else { break;//跳出循环 } } System.out.println("正数个数:" + positiveNum); System.out.println("负数个数:" + negativeNum); } }最简单“无限” 循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,需要根据循环体内部某些条件,来控制循环的结束。
Java遍历质数的算法优化
