2-5程序流程控制
2020.9.13-092
- 顺序结构
- 分支结构:if…else; switch…case
- 循环结构
使用scanner从键盘获取int数据
/*
如何从键盘获取不同类型的变量:需要使用Scanner类
具体实现步骤:
1.导包: import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法,来获取指定类型的变量
注意:
需要根据相应的方法,来输入指定类型的值,如果输入的数据类型与要求的类型不匹配时会报异常InputMismatchException导致程序终止
*/
import java.util.Scanner;
class ScannerTest{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
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("你是否单身:");
boolean islove = scan.nextBoolean();
System.out.println(islove);
//char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
System.out.println("请输入你的性别:");
String gender = scan.next();
char genderChar = gender.charAt(0);//找到gender的第一个字符
System.out.println(genderChar);
}
}
该看094.P96
/* 编写程序:由键盘输入三个整数分别存入变量num1,num2,num3,对他们进行排序,使用if-else,并且从小到大输出
*/
//if - else可以嵌套,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{
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);
}
}
}
}
}
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();
/*方式2
System.out.println("请输入你是否帅:(是/否)");
String isHandsome = scan.next();
if(height>=180 && wealth >= 1 && isHandsome.equals("是"))*/
if(height>=180 && wealth >= 1 && isHandsome){
System.out.println("very good!");
}else if(height>=180 || wealth >= 1 || isHandsom){
System.out.println("just good!");
}else{
System.out.println("no good!");
}
}
}
switch-case
1.凡是可以使用switc-case的结构,都可以转换为if-else,反之不成立
/*
格式:
switch(表达式){
case 常量1:
执行语句一;
//break;
case 常量2:
执行语句二;
//break;
...
default:
执行语句n;
//break;
}
*/
/*
1.根据switch表达式的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case结构中,调用其执行语句。调用完执行语句后则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch-case结构末尾为止结束。
2.break,可以使用在此结构中,一旦执行到此关键字,就跳出switch-case结构
3.switch结构中的表达式,只能是如下6种类型之一:byte,short,char,int,枚举类型(JDK5.0新增),String类型(JDK7.0新增)
boolean,double不可以用
4.case后只能是常量
5.break关键字是可选的(可要可不要)
6.default:相当于if-else中的else,也是可选的。并且位置是灵活的
*/
class SwitchCaseTest{
public static void main(String[] args){
int number = 2;
switch(number){
case 0:
System.out.println("zero");
break;
case 1:
System.out.println("one");
break;
case 2:
System.out.println("two");
break;
default:
System.out.println("other");
break;
}
System.out.println("no good!");
}
}
/*
对学生成绩大于60分的,输出“合格”,低于60分的,输出“不合格”。
说明:
1.如果连续的case输出结果相同,可以合并(不写break)
*/
import java.util.Scanner;
class SwitchCaseTest1{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入你的成绩:");
int score = scan.nextInt();
/*if(scort>=60){
System.out.println("if合格!");
int m = 1;
}else{
System.out.println("if不合格");
int m = 0;
}
//if这段没法用,m出不来
*/
switch(score/60){
case 0:
System.out.println("switch不合格");
break;
case 1:
System.out.println("switch合格");
break;
}
}
}
/*
从键盘输入year年的month和day,要求通过程序输出输入的日期为2019年的第几天
没有对错误进行处理
*/
import java.util.Scanner;
class SwitchCaseTest2{
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();
/*switch(month){
case 1:
System.out.println("这是2019年的第"+day+"天");
case 2:
int d2=(month-1)*31+day;
System.out.println("这是2019年的第"+d2+"天");
case 3:
int d2=(month-1)*31+day;
System.out.println("这是2019年的第"+d2+"天");
case 2:
int d2=(month-1)*31+day;
System.out.println("这是2019年的第"+d2+"天");
}
冗余
*/
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:
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+"月的第"+sumDays+"天");
}
}
循环结构
- for
- while
- do-while
for循环的使用
1.循环结构四要素:
①初始化条件;②循环条件;🌂循环体;④迭代条件
2.for循环结构
for(①;②;④){
🌂
}
执行过程:①-②-🌂-④-②-🌂-④-… …-②
class ForTest{
public static void main(String[] args){
for(int i =1;i<=5;i++){
System.out.println("hello world");
}
}
}
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();
}
}
}