Java流程控制
一、用户交互Scanner
Java提供了一个可以获得用户输入的工具类,java.util.Scanner是java5的新特性,我们可以通过Scanner类来获得用户的输入。
基本语法:
Scanner s = new Scanner(System.in);
通过Scanner类的next()和nextLine()方法获得输入的字符串,在读取前我们一般需要使用hasNext()和hasNextLine()判断是否还有输入的数据。.
next():
- 一定要读取到有效字符后才可以结束输入。
- 对有效字符之前遇到的空白,next()方法会自动将其去掉。
- 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
- next()不能得到带有空格的字符串。
nextLine():
- 以Enter作为结束符也就是说nextLine()方法返回的是输入回车之前的所有字符。
- 可以获得空白。
import java.util.Scanner;
public class Demo04{
public static void main(String[] args){
Scanner scanner = new Scanner(System.im);
System.out.println("请输入数据:");
String str = scanner.nextLine();
System.out.println("输出的内容是:"+str);
scanner.close();//关闭流
}
}
import java.util.Scanner;
public class Demo05{
public static void main(String[] args){
// 计算输入多个数字的和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入
Scanner scanner = new Scanner(System.im);
double sum = 0;
int m = 0;
while(scanner.hasNextDouble()){// 判断是否是数字
double x = scanner.nextDouble();
m++;
sum = sum + x;
}
System.out.println(m+"个数的和是:"+ sum);
System.out.println(m+"个数的平均数是"+(sum / n));
scanner.close();//关闭流
}
}
二、顺序结构
三、选择结构
如果不写break,可能会发生case穿透过(找到对应的case执行结束后,没有break的话会继续执行后面的case)。找不到匹配的case就去执行default语句。
反编译,找到Java文件对应的class文件可以看到具体的执行过程,在switch中如果expression是字符串,在与case比较时,实际上还是数的比较,编译后面class文件中执行name.hashCode()把字符串变成数值。
四、循环结构
注意:
print:输出完成不换行
println:输出完换行
// 99乘法表
/*
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
*/
public class demo01{
public static void main(String []args) {
for(int j = 1; j <= 9; j++){
for(int i = 1; i<=j; i++){
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
}
int[] numbers = {10,20,30,40,50};
for(int x:numbers){
System.out.println(x);
}
五、break和continue
标签使用(不建议使用):
public class demo02 {
public static void main(String []args) {
// 求101-150之间的质数
int count = 0;
outer:for(int i = 101; i<150; i++){
for(int j = 2;j<i/2;j++){
if(i%j == 0){
continue outer;//跳到外层标签处
}
}System.out.print(i+" ");
}
}
}
//输出结果: 101 103 107 109 113 127 131 137 139 149
打印三角形:
public class demo02 {
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();
}
}
}
/* 输出结果:
*
***
*****
*******
*********
*/