03 Java流程控制
01 用户交互Scanner
- 我们通过Scanner类获取用户的输入。
- 基本语法:Scanner s = new Scanner(System.in);
- 通过Scanner类的next()或nextLine()方法来获取输入的字符串,再读取之前一般使用hasNext()或hasNextLine()判断是否还有输入的数据。
- next()方法示例:
package com.kuang.Scanner;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
// 创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方法接收:");
// 判断用户有没有输入字符串
if(scanner.hasNext()){
//使用next方式接收
String str = scanner.next();
System.out.println("输入的内容为"+str);
}
// 凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉
scanner.close();
}
}
- nextLine()方法示例:
package com.kuang.Scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine()方法接收:");
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出内容为"+str);
}
}
}
-next()
-1、读取到有效字符后才结束输入
-2、输入有效字符前的空白,next()方法会自动将其去掉
-3、只有输入有效字符才能将其后面输入的空白作为分隔符或者结束符
-4、next()不能得到带有空格的字符串
-nextLine()
-以enter作为结束符
-可以获得空白
02 Scanner的进阶使用
将if...else...外层添加循环,可多次输入进行累加等计算
package com.kuang.Scanner;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
// 我们要输入多个数字,并求其总和和平均数,
// 每输入一个数字用回车来进行确认,通过输入非数字来结束输入并输出结果
Scanner scanner = new Scanner(System.in);
// 和
double sum = 0;
// 计算输入了多少数字
int m = 0;
System.out.println("请输入数据:");
// 通过循环判断是否还有输入,并在里面每一次进行求和和统计。
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m ++; //统计个数
sum = sum + x;
System.out.println("你输入了第"+m+"个数据,当前和为"+sum);
}
System.out.println(m+"个的和为"+sum);
System.out.println(m+"个数的平均数是"+(sum/m));
scanner.close();
}
}
03 顺序结构
从上而下,一条一条的执行代码为顺序结构
04 选择结构(重点)
if单选择结构
if(布尔表达式){
//如果布尔表达式值为true则执行的语句
}
if双选择结构
if(布尔表达式){
//如果布尔表达式值为true则执行的语句
}else{
//如果布尔表达式值为false则执行的语句
}
示例:
public class IfDemo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
if(i>60)
System.out.println("及格");
else
System.out.println("不及格");
scanner.close();
}
}
多选择结构
if(布尔表达式1){
//如果布尔表达式1值为true则执行的语句
}else if(布尔表达式2){
//如果布尔表达式2值为true则执行的语句
}else if(布尔表达式3){
//如果布尔表达式3值为true则执行的语句
}else if(布尔表达式4){
//如果布尔表达式4值为true则执行的语句
}
示例:
public class IfDemo03 {
public static void main(String[] args) {
// 根据成绩评定等级
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
int i = scanner.nextInt();
if(i==100){
System.out.println("恭喜满分!");
}else if(i<100&&i>=90){
System.out.println("A");
}else if(i<90&&i>=80){
System.out.println("B");
}else if(i<80&&i>=70){
System.out.println("C");
}else if(i<70&&i>=60){
System.out.println("D");
}else if(i<60&&i>=0){
System.out.println("不及格,小垃圾!");
}
else{
System.out.println("成绩不合法");
}
scanner.close();
}
}
#05 Switch选择结构
switch(expression){
case value: //语句
break; //可选
case value:
//语句
break; //可选
//可以有任意数量的case语句
default://可选
//语句
}
示例:
public class SwitchDemo01 {
public static void main(String[] args) {
// case穿透,switch匹配一个具体的值
char grade = 'B';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厉");
break;
default:
System.out.println("未知等级");
}
}
}
public class SwitchDemo02 {
public static void main(String[] args) {
String name = "秦疆";
//字符的本质还是数字
//反编译 java--class(字节码文件)---反编译(Idea)
switch (name){
case "秦疆":
System.out.println("秦疆");
break;
case "王升浩":
System.out.println("王升浩");
break;
default:
System.out.println("hhha");
}
}
}
反编译
java文件编译后为.class文件,无法正常打开查看,可以将其移动至idea可以进行反编译,发现中文的本质还是数字

06 while循环结构详解
在java5中添加了主要用于数组的增强型for循环
//while循环的结构
while(布尔表达式){
//循环内容
}
//一般需要一个表达式来让循环停止
示例:1+2+...+100
public class WhileDemo03 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while(i<=100){
sum= sum+i;
i++;
}
System.out.println(sum);
}
}
07 do...while循环详解
//即使不符合循环条件也至少执行一次
//先执行后判断
do{
//循环内容
}while(布尔表达式);
**while先判断后执行,do..while先执行后判断
08 for 循环详解(重点)
for循环是支持迭代的一种通用结构,是最有效,最灵活的循环结构。
//for 循环基本结构
for(初始化;布尔表达式;更新){
//代码语句
}
示例:100以内的奇数和 while与for 的对比
public class ForDemo01 {
public static void main(String[] args) {
int a = 1;//初始化条件
while(a<=100){ //判断条件
System.out.println(a); //循环体
a+=2; //迭代
}
System.out.println("while循环结束");
// 初始化值,条件判断,迭代
for(int i=1;i<100;i+=2){
System.out.println(i);
}
System.out.println("for循环结束");
/*
* 最先执行初始化步骤,可以声明一种类型,但可初始化一个或者多个循环变量,
* 也可以是空语句*/
for(;;);
}
}
//输入 100.for 可以快速生成for语句
练习1:
public class ForDemo02 {
public static void main(String[] args) {
// 练习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;
}
System.out.println("奇数的和"+oddSum);
System.out.println("偶数的和"+evenSum);
}
}
练习2:
public class ForDemo03 {
public static void main(String[] args) {
//练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
for (int i = 0; i <= 1000; i++) {
if(i%5==0){
System.out.print(i+"\t");
}
if(i%(5*3)==0){
System.out.println();
// System.out.println("\n");
}
}
// println 输出完换行
// print 输出完不换行
}
}
练习3:
public class ForDemo04 {
public static void main(String[] args) {
/*
1.输出第一列数据
2.把固定的1利用循环包起来
3.去掉重复项,i<=9
4.调整样式
*/
for(int j = 1;j <= 9;j++){
for (int i = 1; i <= j; i++) {
System.out.print(i+"*"+j+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
10 增强for循环
作用:主要用于遍历数组元素
public class ForDemo05 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};
for(int i = 0;i<5;i++){
System.out.println(numbers[i]);
}
System.out.println("===================");
//将numbers数组中每个元素赋值给x,然后将x输出
for(int x:numbers){
System.out.println(x);
}
}
}
11 break与continue
- break在任何循环语句的主体部分均可以用break控制循环流程,break用于强制退出循环,不再执行剩下的语句。
- continue语句在循环语句中,用于终止某次循环过程,即跳过循环体中剩余的语句,接着进行下一次是否执行循环的判定
public class BreakDemo {
public static void main(String[] args) {
int i=0;
while(i<50){
if(i==30) break;
i++;
System.out.println(i);
}
}
}
//输出至30就停止输出了
public class ContinueDemo {
public static void main(String[] args) {
int i=0;
while(i<50){
i++;
if(i==30) continue;
System.out.println(i);
}
}
}
//输出至29后,接着输出31至50
12 打印三角形
// *
// ***
// *****
// *******
//*********
public class TestDemo01 {
public static void main(String[] args) {
//打印三角形
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号