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). 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:用于终止某次循环过程,跳过循环体中尚未执行的语句,接着执行下次判定。
本文详细介绍了Java中Scanner类的使用,包括基本的键盘输入处理,以及进阶的多选择结构、嵌套结构和switch语句。通过实例演示如何实现用户交互,以及处理不同数据类型的输入验证。
3252

被折叠的 条评论
为什么被折叠?



