/* 如何从键盘获取不同类型的变量:需要使用Scanner类 具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = new Scanner(System.in); 3.调用Scanner类的相关方法(next() / nextXxx()),来获取指定类型的变量 注意: 需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常:InputMisMatchException 导致程序终止。 */ //1.导包:import java.util.Scanner; import java.util.Scanner; class ScannerTest{ public static void main(String[] args){ //2.Scanner的实例化 Scanner scan = new Scanner(System.in); //3.调用Scanner类的相关方法 System.out.println("请输入你的姓名:"); String name = scan.next(); System.out.println(name); System.out.println("请输入你的芳龄:"); int age = scan.nextInt(); System.out.println(age); System.out.println("请输入你的体重:"); double weight = scan.nextDouble(); System.out.println(weight); System.out.println("你是否相中我了呢?(true/false)"); boolean isLove = scan.nextBoolean(); System.out.println(isLove); //对于char型的获取,Scanner没有提供相关的方法。只能获取一个字符串 System.out.println("请输入你的性别:(男/女)"); String gender = scan.next();//"男" char genderChar = gender.charAt(0);//获取索引为0位置上的字符 System.out.println(genderChar); } }
/* 岳小鹏参加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");//be my wife! BMW <---> MSN }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 scanner = new Scanner(System.in); System.out.println("请输入第一个整数:"); int num1 = scanner.nextInt(); System.out.println("请输入第二个整数:"); int num2 = scanner.nextInt(); System.out.println("请输入第三个整数:"); int num3 = scanner.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); //课后练习3:测算狗的年龄 int dogAge = 6; if(dogAge >= 0 && dogAge <= 2){ System.out.println("相当于人的年龄:" + dogAge * 10.5); }else if( dogAge > 2){ System.out.println("相当于人的年龄:" + (2 * 10.5 + (dogAge - 2) * 4)); }else{ System.out.println("狗狗还没出生呢!"); } //课后练习4:如何获取一个随机数:10 - 99 int value = (int)(Math.random() * 90 + 10);// [0.0,1.0) --> [0.0,90.0) --->[10.0, 100.0) -->[10,99] System.out.println(value); //公式:[a,b] : (int)(Math.random() * (b - a + 1) )+ a } }
/* 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件: 高:180cm以上;富:财富1千万以上;帅:是。 如果这三个条件同时满足,则:“我一定要嫁给他!!!” 如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。” 如果三个条件都不满足,则:“不嫁!” */ import java.util.Scanner; class IfExer1 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入你的身高:(cm)"); int height = scan.nextInt(); System.out.println("请输入你的财富:(千万)"); double wealth = scan.nextDouble(); /* 方式一: System.out.println("请输入你是否帅:(true/false)"); boolean isHandsome = scan.nextBoolean(); if(height >= 180 && wealth >= 1 && isHandsome){ System.out.println("我一定要嫁给他!!!"); }else if(height >= 180 || wealth >= 1 || isHandsome){ System.out.println("嫁吧,比上不足,比下有余。"); }else{ System.out.println("不嫁!"); } */ //方式二: System.out.println("请输入你是否帅:(是/否)"); String isHandsome = scan.next(); if(height >= 180 && wealth >= 1 && isHandsome.equals("是")){ System.out.println("我一定要嫁给他!!!"); }else if(height >= 180 || wealth >= 1 || isHandsome.equals("是")){ System.out.println("嫁吧,比上不足,比下有余。"); }else{ System.out.println("不嫁!"); } } }
/* 分支结构之二:switch-case 1.格式 switch(表达式){ case 常量1: 执行语句1; //break; case 常量2: 执行语句2; //break; ... default: 执行语句n; //break; } 2.说明: ① 根据switch表达式中的值,依次匹配各个case中的常量。一旦匹配成功,则进入相应case结构中,调用其执行语句。 当调用完执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构 末尾结束为止。 ② break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构 ③ switch结构中的表达式,只能是如下的6种数据类型之一: byte 、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增) ④ case 之后只能声明常量。不能声明范围。 ⑤ break关键字是可选的。 ⑥ default:相当于if-else结构中的else. default结构是可选的,而且位置是灵活的。 */ class SwitchCaseTest { public static void main(String[] args) { int number = 5; switch(number){ case 0: System.out.println("zero"); break; case 1: System.out.println("one"); break; case 2: System.out.println("two"); break; case 3: System.out.println("three"); break; default: System.out.println("other"); //break; } String season = "summer"; switch (season) { case "spring": System.out.println("春暖花开"); break; case "summer": System.out.println("夏日炎炎"); break; case "autumn": System.out.println("秋高气爽"); break; case "winter": System.out.println("冬雪皑皑"); break; default: System.out.println("季节输入有误"); break; } //**************如下的两种情况都编译不通过********************* //情况一 /* boolean isHandsome = true; switch(isHandsome){ case true: System.out.println("我好帅啊~~~"); break; case false: System.out.println("我好丑啊~~~"); break; default: System.out.println("输入有误~~~"); } */ //情况二 /* int age = 10; switch(age){ case age > 18: System.out.println("成年了"); break; default: System.out.println("未成年"); } */ } }
例 题 1.使用 switch 把小写类型的 char型转为大写。只转换 a, b, c, d, e. 其它的输 出 “other”。 提示:String word = scan.next(); char c = word.charAt(0); switch(c){} 2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。 3.根据用于指定月份,打印该月份所属的季节。 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 4. 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序 输出输入的日期为2019年的第几天。
/* 例题:对学生成绩大于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: } */ /* int score = 78; if(score >= 60){ }else{ } */ int score = 78; 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年的第几天。 2 15: 31 + 15 5 7: 31 + 28 + 31 + 30 + 7 .... 说明: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{//month == 12 //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("2019年" + month + "月" + day + "日是当年的第" + sumDays + "天"); } }
/* 从键盘分别输入年、月、日,判断这一天是当年的第几天 注:判断一年是否是闰年的标准: 1)可以被4整除,但不可被100整除 或 2)可以被400整除 说明: 1. 凡是可以使用switch-case的结构,都可以转换为if-else。反之,不成立。 2. 我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多), 又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case执行效率稍高。 */ 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; //判断year是否是闰年 if((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0){ sumDays += 29; }else{ sumDays += 28; } case 2: sumDays += 31; case 1: sumDays += day; } System.out.println(year + "年" + month + "月" + day + "日是当年的第" + sumDays + "天"); } }
/* For循环结构的使用 一、循环结构的4个要素 ① 初始化条件 ② 循环条件 --->是boolean类型 ③ 循环体 ④ 迭代条件 二、for循环的结构 for(①;②;④){ ③ } 执行过程:① - ② - ③ - ④ - ② - ③ - ④ - ... - ② */ class ForTest { public static void main(String[] args) { /* System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); System.out.println("Hello World!"); */ for(int i = 1;i <= 5;i++){//i:1,2,3,4,5 System.out.println("Hello World!"); } //i:在for循环内有效。出了for循环就失效了。 //System.out.println(i); //练习: int num = 1; for(System.out.print('a');num <= 3;System.out.print('c'),num++){ System.out.print('b'); } //输出结果:abcbcbc System.out.println(); //例题:遍历100以内的偶数,输出所有偶数的和,输出偶数的个数 int sum = 0;//记录所有偶数的和 int count = 0;//记录偶数的个数 for(int i = 1;i <= 100;i++){ if(i % 2 == 0){ System.out.println(i); sum += i; count++; } //System.out.println("总和为:" + sum); } System.out.println("总和为:" + sum); System.out.println("个数为:" + count); } }
/* 编写程序从1循环到150,并在每行打印一个值, 另外在每个3的倍数行上打印出“foo”, 在每个5的倍数行上打印“biz”, 在每个7的倍数行上打印输出“baz”。 */ class ForTest1 { public static void main(String[] args) { for(int i = 1;i <= 150;i++){ System.out.print(i + " "); if(i % 3 == 0){ System.out.print("foo "); } if(i % 5 == 0){ System.out.print("biz "); } if(i % 7 == 0){ System.out.print("baz "); } //换行 System.out.println(); } } }