流程控制
1.用户交互Scanner
-
Scanner类
-
获取用户的输入
-
Scanner reader = new Scanner(System.in);
-
next(),nextLine(),hasNext(),hasNextLine();
-
package scanner;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接受键盘数据
Scanner reader = new Scanner(System.in);
System.out.println("使用nextLine()方式接收");
//判断用户有没有输入字符串
if(reader.hasNextLine()){
String str = reader.nextLine();
System.out.println(str);
}
//凡是属于IO流,使用完毕之后务必关闭资源
reader.close();
}
}
package scanner;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
int count = 0;
while(scanner.hasNextDouble()){
double x = scanner.nextDouble();
count++;
sum += x;
}
System.out.println(sum);
scanner.close();
}
}
2.顺序结构
- 基本结构
- 每个算法都离不开的结构
3.选择结构
3.1单选择结构
boolean flag = true;
if(flag){
}
3.2双选择结构
boolean flag = true;
if(flag){
}else{
}
3.3多选择结构
boolean flag = true;
if(flag){
}else if(flag){
}else{
}
3.4嵌套结构
if(){
if(){
}
}
package struct;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double score = 0;
System.out.println("请输入成绩:");
//接收数据
if(scanner.hasNextDouble()){
score = scanner.nextDouble();
}
//判断成绩的级别
if(score == 100){
System.out.println("S");
}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){
System.out.println("不及格");
}else{
System.out.println("成绩不合法");
}
scanner.close();
}
}
3.5switch选择结构
case穿透现象
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。如果没有break语句,那么就会从表达式的值相匹配的case标签处开始执行,一直执行到switch语句的末尾,这种从其中的一个case处开始,忽略后面的值的匹配,直接运行case的内容的现象就是穿透的现象。
public class Demo02 {
public static void main(String[] args) {
//case穿透 无break
//switch “匹配”
char grade = 'B';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("再接再厉");
default:
System.out.println("挂科");
}//没有break就会出现case穿透现象!输出下边所有的
}
}
反编译
idea中可以直接将class文件 丢在一个文件夹下
4.循环结构
whill循环 do……while循环
int i = 0 ;
while(i<100){
System.out.println(i++);
}
package struct;
public class Demo03 {
public static void main(String[] args) {
int i = 0;
while(i<100){
System.out.println(++i);
}
//=========================================
int a = 0;
int sum = 0;
while(a<=100){
sum += a;
a++;
}
System.out.println(sum);
//===================================================
int b = 0;
int c = 0;
do{
System.out.println(b);
}while(b<0);
System.out.println("======================");
while(c<0){
System.out.println(c);
}
}
}
for循环
- 迭代的通用结构。有效、灵活
- 执行次数在执行前就确定的
- 最先执行的为初始化步骤。可以声名一种类型,可以初始化一个或者多个循环变量可以是空语句
- 其次,检测布尔表达式的值,也可以为空即死循环
- 执行一次循环后,更新循环控制变量
//用whil/do循环输出0-1000 5的倍数,且每行输出三个
for (int i = 0; i < 1000; i++) {
if((i%5)==0){
System.out.print(i+"\t");
}
if((i%(3*5))==0) {
System.out.println();
}
}
package struct;
public class Demo06 {
public static void main(String[] args) {
//九九乘法表
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();
}
}
}
- 增强for循环 for each
5.break、continue
-
break
在任何循环语句的主体部分,均可以使用break控制循环的流程。break用于强制退出循环不执行循环中剩余的语句
for(i = 0; i < 100; i++){
if(i == 30){
break;
}
System.out.println(i+"\t");
}//输出0~29
-
continue
用在循环语句体中,用于终止某一次的循环过程
for(i = 0; i < 100; i++){
if(i%10 == 0){
continue;
}
System.out.println(i+"\t");
}//不输出10的倍数
-
goto关键字(了解)
-
goto依然是Java中的一个保留字,在break和continue中可以看到一些goto的影子
-
“标签”指后面跟一个冒号的标识符:
lable:
-
对Java来说唯一用到标签的地方是在循环语句之前
-
package struct;
public class Demo08 {
public static void main(String[] args) {
//打印101到150之间的质数
lable:for(int i = 101;i<150;i++){
for(int j = 2;j<i/2;j++)
if(i%j==0)
continue lable;
System.out.print(i+"\t");
}
}
}
6练习
public class Demo09 {
public static void main(String[] args) {
//打印三角形
for (int i = 0; i < 5; i++) {
for (int j = 5; j > i; j--) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}