Java流程控制
1.Scanner对象
我们可以通过Scanner类来获取用户的输入。
基本语法:
Scanner scanner = new Scanner(System.in);
通过Scanner类的next( )与nextLine( )方法获取输入的字符串,在读取前我们一般需要使用hasNext( )与hasNextLine( )判断是否还有输入的数据。
-
next():
-
一定要读取到有效字符后才可以结束输入。
-
对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
-
只有输入有效字符后才将其后面输入的空白作为分隔符或结束符。
-
next()不能得到带有空格的字符串。
-
-
nextLine():
-
以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
-
可以获得空白。
-
输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果。
package com.Du.Scanner;
import java.util.Scanner;
public class Demo{
public static void main(String[] args){
//我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出结果。
Scanner scanner = new Scanner(System.in); //创建一个扫描对象,用于接收键盘数据
double sum = 0; //和
int m = 0; //计算输入了多少个数字
while(scanner.hasNextDouble()){ //通过循环判断是否还有输入,并在里面对每次进行求和
double x = scanner.nextDouble();
m++;
sum = sum + x;
System.out.println("你输入了第"+m+"个数据,当前结果sum="+sum);
}
System.out.println(m+"个数据和为"+sum);
System.out.println(m+"个数据的平均数为"+(sum/m));
scanne.close();
}
}
Scanner判断输入整数小数
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:")
if(scanner.hasNextInt()){
int a = scanner.nextInt();
System.out.println(a);
}else{
System.out.println("输入的不是整数");
}
System.out.println("请输入小数:")
if(scanner.hasNextFloat()){
float b = scanner.nextInt();
System.out.println(b);
}else{
System.out.println("输入的不是小数");
}
scanner.close();
}
2.顺序结构
3.选择结构
if单选择结构
语法:
if(布尔表达式){
//如果布尔表达式为true,则执行语句
}
if双选择结构
语法:
if(布尔表达式){
//如果true,将执行语句
}else{
//如果false,将执行语句
}
if多选择结构
语法:
if(布尔表达式){
//如果布尔表达式为true,则执行语句
}else if(布尔表达式){
//如果布尔表达式为true,则执行语句
}else if(布尔表达式){
//如果布尔表达式为true,则执行语句
......
}else{
//如果以上都为false,则执行语句
}
嵌套的if结构
语法:
if(){
if(){
}
}
switch多选择结构
switch...case...语句判断一个变量与一系列值中某个值相等,每一个值成为分支。
语法:
(String、byte、int...) (expression) = (value)
switch(expression){
case value:
//语句
break; //可选,用于强行退出,case具有穿透性。
case value:
//语句
break; //可选,用于强行退出,case具有穿透性。
.........
default:
//语句
break;
}
-
switch语句中的变量类型可以是:
-
byte short int char
-
从JDK7开始,支持String
-
case标签必须为字符串常量或字面量
-
4.循环结构
while循环
语法:
while(布尔表达式){
//循环内容
}
-
只要布尔表达式为true,循环就一直执行下去。
-
我们大多数情况下是会让循环停止下来,我们需要一个让表达式失效的方式来结束循环。 放到布尔表达式中。
思考1+2+...+100=?
int a = 0;
int sum = 0;
while(a <= 100){
sum = sum + a;
a++;
}
do...while 循环
do...while循环与while循环相似,不同的是,do...while至少会执行一次。
语法:
do{
//循环内容
}while(布尔表达式);
-
while先判断后执行,do...while先执行,后判断!
for循环
语法:
for(初始化;布尔表达式;迭代更新){
//代码语句
}
-
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构。
-
for循环执行的次数是在执行前就确定的。
-
练习1:计算0~100之间奇数和,偶数和
int oddSum = 0;
int evenSum = 0;
for(int i = 0;i <=100;i++){
if(i%2==0){
oddSum += i;
}else{
evenSum += i;
}
} -
练习2:用while or for循环输出1-1000之间能被5整除的数,每行3个
for(int i = 1;i <= 1000;i++){
if(i%5 == 0){
System.out.print(i+"\t"); // "\t"为制表符,相当于tab键
}
if(i%(3*5) == 0){
System.out.println();
}
} -
练习3:打印九九乘法表
for(int j = 1;j <= 9;j++){
for(int i = 1;i <= 9;i++){
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
/* 1.打印第一列;
2.把固定的1,替换成j,外面再加个循环包起来;
3.去掉重复项,i<=j;
4.调整样式。 */
增强for循环
语法:
for(声明语句:表达式)
{
//代码句子
}
5.break & continue
-
break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch结构中使用)
-
continue语句用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
6.流程控制练习
打印三角形
for(int i = 1;i <= 5;i++){
for(int j = 5;j >= i;j--){
System.out.print(" ");
}
for(int j = 1;j <= i;j++){
System.out.print("*");
}
for(int j = 1;j < i;j++){
System.out.print("*");
}
System.out.println();
}

浙公网安备 33010602011771号