Java流程控制
1.用户交互 Scanner
Java给用户提供了一个工具类,可以获取用户的输入。Java.util.Scanner 是 Java5 的新特征,我们可以通过Scanner类来获取用户的输入
-
基本语法
Scanner s = new Scanner(System.in)
-
通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用hasNext() 与hasNextLine() 判断是否还有输入的数据。
-
next() 与 nextLine() 区别
-
next():
-
读取有效字符后才可以结束输入
-
对输入有效字符之前遇到的空白,next() 方法会自动将其去掉
-
只有输入有效字符后 才将其后面的空白作为分隔符或者结束符
-
next() 不能得到 带有空格的字符串
-
-
nextLine():
-
以 Enter 为结束符,即返回 输入回车前的所有字符
-
可以获得空白
-
-
import java.util.Scanner;
// 用户交互 Scanner
public class Demo01 {
public static void main(String[] args) {
// 创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收: ");
// 采用 hasNext 判断用户有没有输入字符串
if (scanner.hasNext()){
//使用 next方式接收用户输入的字符串
String str = scanner.next(); //程序会等待用户输入完毕
System.out.println("输入的内容为:"+str);
}
//凡是属于 IO流 的类 如果不关闭会一直占用资源,要养成良好的习惯用完关掉
scanner.close();
}
}
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;
//通过循环判断是否还有输入,并在里面对每一次进行求和统计
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
m++;
sum += x;
System.out.println("你输入了第"+m+"个数据,当前结果sum="+sum);
}
double aver = sum/m;
System.out.println(m+"个数的平均数是:"+ aver);
scanner.close();
}
}
2.顺序结构
顺序结构是最简单的算法结构,语句与语句之间是按从上到下顺序执行的。
3.选择结构
-
if 单选择结构
// 语法格式
if(布尔表达式){
//若布尔表达式为 true 将执行的语句
}
import java.util.Scanner;
// 流程控制 ————————》选择结构
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
// equals: 判断字符串是否相等
if(s.equals("Hello")){
System.out.println(s);
}
System.out.println("End");
scanner.close();
}
}
-
if 双选择结构
//语法格式
if(布尔表达式){
//若布尔表达式值为True
}else{
//若布尔表达式值为False
}
-
if 多选择结构
-
if 语句至多有 1个 else 语句,else 语句在所有的 else if 语句之后
-
if(布尔表达式1){
//若布尔表达式1值为true执行
}else if(布尔表达式2){
//若布尔表达式2值为true执行
}else if(布尔表达式3){
//若布尔表达式3值为true执行
}else{
//若以上布尔表达式都不为true执行
}
-
嵌套的 if 结构
if (布尔表达式1){
//若布尔表达式1值 为true执行代码
if(布尔表达式2){
//若布尔表达式2值 为true执行代码
}
}
-
switch case 多选择结构
-
用于判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
-
switch 语句中的变量类型可以是:
-
byte 、short int 或者 char
-
从 JavaSE7 开始 switch 支持字符串String类型了
-
同时 case 标签必须为字符串常量或字面量
-
-
switch(expression){
case value:
//语句
break; //可选
case value:
//语句
break; //可选
//可以有任意数量的case语句
default: //可选
//语句
}
import java.util.Scanner;
public class SwitchDemo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的结果:");
String s = scanner.nextLine();
// case 穿透 switch 匹配一个具体的值
// 反编译 Java文件----------class(字节码文件)---------反编译(IDEA)
switch(s){
case "apple":
System.out.println("select apple");
break;
case"pear ":
System.out.println("select pear");
break;
default:
System.out.println("no choice");
}
scanner.close();
}
}
4.循环结构
-
While 循环 (先判断 后执行)
// 输出1~100之间的数 并求和
public class WhileDemo01 {
public static void main(String[] args) {
int i = 1;
int sum = 0;
while(i<=100){
System.out.println(i);
sum+=i;
i++;
}
System.out.println(sum);
}
}
-
DoWhile 循环(先执行 后判断)
-
do....while 循环和 while 循环类似,不同的是:do....while循环至少执行一次。
-
即:即使不满足条件也会执行一次。
-
do{
//代码块
}while(expression);
-
For 循环
-
for循环语句 是 支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for(初始化;布尔表达式;更新){
//代码语句
}
// println 输出完 会换行
// print 输出完 不会换行
// 练习1: 计算 0~100之间的奇数和偶数的和
public class ForDemo01 {
public static void main(String[] args) {
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i < 100; i++) {
if(i % 2 == 0){
// i 为偶数
evenSum += i;
}else{
// i 为奇数
oddSum += i;
}
}
System.out.println("奇数和为:"+oddSum);
System.out.println("偶数和为:"+evenSum);
}
}
// 练习2 :用 while 或 for 循环输出 1-1000之间能被 5整除的数,并且每行输出3个
public class ForDemo02 {
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 1000; i++) {
if(i % 5 == 0){
System.out.print(i +"\t"); //输出后不换行,每个输出隔一个tab
if(i % (5*3) == 0){ // 每行3个后换行
System.out.println();
}
/*
count++;
if(count >= 3){
System.out.println();
count = 0;
}
*/
}
}
}
}
// 打印 九九乘法表
public class ForDemo03 {
public static void main(String[] args) {
// 1.先打印第一列;
// 2.去掉重复项 j <= i;
// 3.调整样式
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+ j +"="+(i*j)+"\t");
}
System.out.println();
}
}
}
-
Java5 中引入了一种主要用于 数组的增强型 for 循环
for(声明语句:表达式){
// 代码句子
}
public class ForDemo04 {
public static void main(String[] args) {
//主要用于 数组的增强型 for 循环
int[] numbers = {10,20,30,40,66,88};
//遍历数组
for(int x : numbers){ //把 numbers数组中 每一项遍历出来赋值给 x
System.out.print(x + "\t");
}
}
}
5.break & continue
-
break : 在任何循环语句的主体部分,均可用 break 控制循环的流程。break 用于强行退出循环,不执行循环中剩余的语句( break 语句在 switch 语句中使用)
-
continue :用于循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。
6.练习
public class TestDemo01 {
public static void main(String[] args) {
//打印三角形 5行
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();
}
}
}
1491

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



