java流程控制(用户交互、顺序结构、循环结构)
Java流程控制
用户交互Scanner
-
Scanner s = new Scanner(System.in);
-
Scanner 类的next()和nextLine()方法获取输入的字符串的区别:
-
next没有拼接字符串的功能,如这里不能写hello world,可以写helloworld
public static void main(String[] args) { //创建一个扫描器,用户键盘接收数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收:"); if (scanner.hasNext()){ //获取键盘输入的数据,将数据传给str String str = scanner.next(); System.out.println("输入的内容为:"+str); } //关闭 scanner.close(); } -
nextLine可以自动拼接字符串,下面的代码不用if语句,因为在实际使用中,可以直接使用,不需要if来判断,科省略
public static void main(String[] args) { //创建一个扫描器,获取键盘输入的值 Scanner scanner = new Scanner(System.in); //将获取到的数据传给str String str = scanner.nextLine(); //输出 System.out.println("你输入的数据是:"+str); scanner.close(); } -
例子
public static void main(String[] args) { //输入多个数字,显示当前输入了多少个数字、输入数字的总和以及平均数 Scanner scanner = new Scanner(System.in); //总数 double sum= 0 ; //输入数字个数 int i = 0; while (scanner.hasNextDouble()){ double x = scanner.nextDouble(); i =i+1; sum = sum+x; System.out.println("你当前输入的第:"+i+"个数据,当前和结果为:"+sum); } System.out.println(i+"个数的和是:"+sum); System.out.println(i+"个数的平均值是:"+(sum/i)); scanner.close(); }10
你当前输入的第:1个数据,当前和结果为:10.0
20
你当前输入的第:2个数据,当前和结果为:30.0
30
你当前输入的第:3个数据,当前和结果为:60.0
w
3个数的和是:60.0
3个数的平均值是:20.0
-
顺序结构
- java的基本结构就是顺序结构,除非特别指明,否则就是一句一句的执行
- 是任何算法都离不开的一个基本结构
选择结构
-
if单选择结构:
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入金额,单位万"); String money = scanner.nextLine(); if (money.equals("100")){ System.out.println("支付成功,支付金额为"+money+"万,收购成功"); }else{ System.out.println("支付失败,支付金额为"+money+"万,自己做开发"); } scanner.close(); } -
if双选择结构:
public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩"); int score = scanner.nextInt(); if (score>60){ System.out.println("及格"); }else{ System.out.println("不及格"); } scanner.close(); } -
多选择结构:一旦其中一个else if语句检测为true,则其他的else if以及else语句都将跳过执行
Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩"); int score = scanner.nextInt(); if (score==100){ System.out.println("恭喜满分"); }else if (score>90){ System.out.println("A级"); }else if (score>80) { System.out.println("B级"); }else if (score>70) { System.out.println("C级"); }else if (score>60) { System.out.println("D级"); }else { System.out.println("不及格"); } scanner.close(); } -
嵌套if结构:
-
switch多选择结构:jdk7以后,可以接字符串,比如grade ='英俊',case'英俊'
char grade = 'A'; 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("挂科"); }
循环结构
-
while循环:只要布尔表达式为true,循环就会一直持续下去,尽量避免死循环,例子(计算1-100数相加的和)
public static void main(String[] args) { int i = 0; int sum = 0; while (i<=100){ sum = sum+i; i++; } System.out.println(sum); } -
do...while循环:
public static void main(String[] args) { int a = 0; while (a<0){ System.out.println(a);//不输出结果 a++; } System.out.println("--------------------------"); do { System.out.println(a);//可以输出a=0,以为do while ,至少会运行一次,不管循环成立与否 a++; }while (a<0); } -
for循环:是一种最有效、最灵活的循环结构。
public static void main(String[] args) { int a; for (a=0;a<100;a++){ System.out.println(a); } System.out.println("for循环结束"); } -
for循环嵌套实列:(打印99乘法表)
public static void main(String[] args) { for (int i = 1; i <=9; i++) { for (int j = 1; j <= i; j++) { System.out.print(j+"*"+i+"="+i*j+"\t"); } System.out.println(); } } -
增强for循环
public static void main(String[] args) { int[] number = {10,20,30,40,50}; for (int i = 0;i<5;i++){ System.out.println(number[i]); } System.out.println("+++++++++++++++++++++"); for (int x:number){ System.out.println(x);//下面这个是增强for循环,遍历了一个数组,结果和上面的for循环一样 } }
break continue
-
break 用于强制退出循环,不执行循环中剩余的语句。
-
continue用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着执行下一次循环判定。
-
goto关键字:指从循环中跳出到另一个循环之中来,如下例中,通过给循环命名,然后在continue你想跳到的循环名。
//练习:输出101—151中的所有质数,质数指的是,在大于一的自然数中只存在1和他本身为因素的自然数。 public static void main(String[] args) { int count = 0; out: for (int i=101;i<151;i++){ for (int j=2;j<i/2;j++){ if (i%j == 0){ continue out; } } System.out.println(i+""); } }
for循环例子
-
打印三角形:
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号