Java流程控制

本文详细介绍了Java中Scanner类的使用,包括基本的键盘输入处理,以及进阶的多选择结构、嵌套结构和switch语句。通过实例演示如何实现用户交互,以及处理不同数据类型的输入验证。

Java流程控制

Scanner

从键盘接收数据

//用户交互Scanner
Scanner scanner = new Scanner(System.in);

// 从键盘接收数据
int a = 0;
float b = 0.0f;
System.out.println("请输入整数:");

if (scanner.hasNextInt()){
    a = scanner.nextInt();
    System.out.println("整数数据:" + a);
} else {
    System.out.println("输入的不是整数数据!");
}

System.out.println("请输入小数:");

if (scanner.hasNextFloat()){
    b = scanner.nextFloat();
    System.out.println("小数数据:" + b);
} else {
    System.out.println("输入的不是小数数据!");
}



scanner.close();
// Scanner进阶案例
Scanner scanner = new Scanner(System.in);

System.out.println("请输入数字:");

//和
double sum = 0;
//计算输入了多少个数字
int m = 0;

while (scanner.hasNextDouble()){
    double v = scanner.nextDouble();
    m++;
    sum = sum + v;
    System.out.println("您输入了第" + m + "个数据,当前结果sum=" + sum);
}

System.out.println("您输入的不是数字!");
System.out.println("您输入的" + m + "个数字和为:" + sum);
System.out.println("您输入的" + m + "个数字平均值为:" + (sum / m));

scanner.close();

struct基本结构

1、顺序结构:Java程序从上到下依次执行。只能被执行一次(无循环)

2、选择结构

  • if单选择结构
public static void main(String[] args) {	
	/*
	语法:
    if(布尔表达式){
        如果布尔表达式为true,将执行的语句
    }
    */
    Scanner scanner = new Scanner(System.in);

    System.out.println("请输入内容:");
    String line = scanner.nextLine();

    if (line.equals("hello")){
        System.out.println(line);
    }

    System.out.println("End");

	scanner.close();
   }
  • if双选择结构
public static void main(String[] args) {	
	/*
    语法:
     if(布尔表达式){
         如果布尔表达式为true,将执行的语句
     } else {
         如果布尔表达式为false,将执行的语句
     }
    */
    Scanner scanner = new Scanner(System.in);

    System.out.println("请输入成绩:");
	    Int score= scanner.nextInt();

    if (score > 60){
        System.out.println("及格");
    } else {
    	System.out.println("不及格");
    }

    System.out.println("End");

    scanner.close();
}
  • if多选择结构
public static void main(String[] args) {
    /*
    if语句至多有1个esle语句,else语句在所有的else if语句之后。
    if语句可以有若干个else if语句,它们必须在else语句之前。
    一旦其中一个else if语句检测为true,其他的else if以及else
    语法:
    if(布尔表达式 1){
        如果布尔表达式1的值为true,将执行的语句
    } else if(布尔表达式 2){
        如果布尔表达式2的值为true,将执行的语句
    } else if(布尔表达式 3){
        如果布尔表达式3的值为true,将执行的语句
    } else if(布尔表达式 4){
        如果布尔表达式4的值为true,将执行的语句
    } else {
        如果以上布尔表达式都不为true,将执行的语句
    }
    */
    Scanner scanner = new Scanner(System.in);

    System.out.println("请输入成绩:");
    int score = scanner.nextInt();

    if (score == 100){
        System.out.println("恭喜满分!");
    } else if(score < 100 && score >= 90){
        System.out.println("恭喜及格,A级");
    } else if(score < 90 && score >= 80){
        System.out.println("恭喜及格,B级");
    } else if(score < 80 && score >= 70){
        System.out.println("恭喜及格,C级");
    } else if(score < 70 && score >= 60){
        System.out.println("恭喜及格,D级");
    } else if(score < 60 && score >= 0){
        System.out.println("不及格!");
    } else {
        System.out.println("成绩不合法!");
    }

    System.out.println("End");

    scanner.close();
}
  • if嵌套结构
使用嵌套的if...else语句是合法的。也就是说可以在另一个if或者else if语句中使用if或者else if语句。
可以像if语句一样嵌套else if...else。
语法:
if(布尔表达式 1){
	如果布尔表达式 1的值为true,则执行此语句
	if(布尔表达式 2){
		如果布尔表达式 2的值为true,则执行此语句
	}
}
  • switch多选择结构
/*
switch:匹配一个具体的值
没有break,语句将从true的位置开始输出到有break的位置
default:都为false,将会输出此语句
switch(expression){
	case vaule :
		语句;
		break;
	case vaule :
		语句;
		break;
	...任意数量的case语句
	default:
		语句;
}
*/
int grade = '100';
switch(grade){
	case '100':
		System.out.println("恭喜!满分");
		break;//防止case穿透
	case '90':
		System.out.println("恭喜!优秀");
		break;
	case '80':
		System.out.println("恭喜!良好");
		break;
	case '70':
		System.out.println("啊哦!继续加油");
		break;
	case '60':
		System.out.println("危险!刚好及格");
		break;
	default:
		System.out.println("成绩不合法!请重新输入!");
}

switch语句中的变量类型可以是:

  • byte,short,int或者char
  • 从JDK7开始支持string,同时case标签必须为字符串常量或字面量。
  1. 循环结构:相同的操作执行多次

1). while循环
while是最基本的循环

/*
只要布尔表达式为true,循环会一直执行下去(也叫‘死循环’),正常业务开发应尽量避免。
我们大多数情况是会让循环停止的,因此需要一个让表达式失效的方式来结束循环。
少部分情况需要循环一直执行,比如服务器的请求响应监听等
while(布尔表达式){
	循环内容;
}
*/
int i = 0;
int sum = 0;
while(i <= 100){
    sum += i;
    i++;//迭代
}
System.out.println(sum);//5050

2). do…while循环

int i = 0;
int sum = 0;
do{
	sum += i;
    i++;
} while (i <= 100);
System.out.println(sum);//5050

while和do…while的区别

int i = 0;
//while先判断再执行
while (i < 0){//false,不输出i
    System.out.println(i);
    i++;
}
System.out.println("---------------------------------");
//do...while先执行再判断,至少执行一次
do {
    System.out.println(i);//i=0
    i++;
} while (i < 0);//true

3). for循环

/*
for(初始化; 布尔表达式; 更新){
	执行语句;
}
*/
//死循环
for(;;){
}


//1-100奇数和、偶数和、奇偶之和
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i <= 100; i++) {
    if (i % 2 == 0){
        evenSum += i;
    } else {
        oddSum += i;
    }
}
System.out.println("偶数和:" + evenSum);//偶数和:2550
System.out.println("奇数和:" + oddSum);//奇数和:2500
System.out.println("奇偶之和:" + (evenSum + oddSum));//奇偶之和:5050


//1-1000被5整除的数,每行四个数
for (int i = 1; i <= 1000; i++) {
    if (i % 5 == 0){
        System.out.print(i + "\t");
    }
    if (i % (5 * 4) == 0){
        System.out.println();
        //System.out.print("\n");
    }
}


//九九乘法表
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        int num = i * j;
        System.out.print(j + "*" + i + "=" + num + "\t");
    }
    System.out.println();
}

4). 增强for循环

/*
主要用于数组或集合
*/
for(声明语句 : 表达式){
	输出语句;
}

break、continue

break:强行退出循环,循环之外的语句继续输出。
continue:用于终止某次循环过程,跳过循环体中尚未执行的语句,接着执行下次判定。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值