Java流程控制
用户交互Scanner
Scanner对象
Scanner s = new Scanner(System.in);
- next()
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
package scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String str = scanner.next();
System.out.println("输出的内容是"+str);
/*//判断用户有没有输入字符串
if (scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println("输出的内容是"+str);
}*/
//凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完关闭掉
scanner.close();
}
}
- nextLine():
- 以Enter为结束符也就是说nextline()方法返回的是输入回车前所有字符
- 可以获得空白
package scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
System.out.println("输出的内容是:"+s);
/*if(scanner.hasNextLine()){
String s = scanner.nextLine();
System.out.println("输出的内容是:"+s);
}*/
scanner.close();
}
}
输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果。
package scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
//输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果。
Scanner scanner = new Scanner(System.in);
//定义一个和sum以及计算共输入了多少数字m。
double sum = 0;
int m = 0;
System.out.println("输入多个数字,并求其总和与平均值,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果");
//通过循环判断是否还有输入,并在里面对每一次进行求和和统计。
while (scanner.hasNextDouble()){
double v = scanner.nextDouble();
m++;
sum+=v;
System.out.println("你输入了第"+m+"个数据,当前的和sum="+sum);
System.out.println("你输入了第"+m+"个数据,当前的平均值是"+sum/m);
}
System.out.println(m+"个数的和为:"+sum);
System.out.println(m+"个数的和为:"+sum/m);
scanner.close();
}
}
顺序结构
从上到下依次进行,它是任何算法都离不开的一种基本算法结构。
选择结构
if单选结构
if(布尔表达式){
输出语句;
}
if双选结构
if(布尔表达式){
输出语句1;
}else{
输出语句2;
}
if多选结构
//表达式正确输出相对应语句,不正确按顺序继续判断
if(布尔表达式1){
输出语句1;
}else if(布尔表达式2){
输出语句2;
}else if(布尔表达式3){
输出语句3;
}else if(布尔表达式4){
输出语句4;
}
.......
else{
输出语句n+1;
}
嵌套的if结构
if(布尔表达式1){
//布尔表达式1正确执行
语句1;
if(布尔表达式2){
//布尔表达式2正确执行
语句2;
}
}
switch多选择结构
- switch case语句判断一个变量与一系列之中的某个值是否相等,每个值称为一个分支。
- switch语句中的变量类型可以是:
- byte、short、int或者char。
- 从Java SE 7 开始switch支持String类型
- case标签必须为字符串常量或者字面量。
switch(){
case value:
//语句
break;//可选
case value:
//语句
break;//可选
.....//多条case语句
default://可选
//语句
}
循环结构
while循环
while(布尔表达式){
语句;//布尔表达式为真一直执行;为假跳出
}
do …while循环
//必执行一次
do{
语句;
}while()
for循环
package structure;
public class ForDemo02 {
public static void main(String[] args) {
//练习:用for循环输出1-1000之前能被5整除的数,并且每行输出3个
for (int i = 0; i < 1000; i++) {//1000.for可以快速生成
if (i%5==0){
System.out.print(i+"\t");// \t相当于tab键
}if (i%(5*3)==0){
System.out.println();
//System.out.print("\n");
}
}
}
}
package structure;
public class ForDemo03 {
public static void main(String[] args) {
//九九乘法表
/*
1、先打印第一列
2、再把固定的1用循环体包起来
3、去掉重复项
4、调样式
*/
for (int j = 0; j <=9; j++) {
for (int i = 1; i<=j; i++) {
System.out.print(i+"*"+j+"="+(j*i)+"\t");
}
System.out.println();//通过j来控制列
}
}
}
增强for
package structure;
public class ForDemo05 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};
//遍历数组的元素
for (int x:numbers){
System.out.println(x);
}
/*
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
*/
}
}