天天看点

流程的控制1.接收用户输入2.程序执行结构3.判断用户输入类型

文章目录

  • 1.接收用户输入
  • 2.程序执行结构
    • 2.1.分支结构
      • 2.1.1.if条件结构
      • 2.1.2.switch语句
    • 2.2.循环结构
      • 2.2.1.while循环
      • 2.2.2.do-while 循环
      • 2.2.3.for循环
    • 2.3.循环嵌套
    • 2.4.终止循环
      • 2.4.1.基本语句
      • 2.4.2.退出多重循环
    • 2.5.图形的打印
      • 2.5.1.直角三角形
      • 2.5.2.等腰三角形
      • 2.5.3.实心菱形
      • 2.5.4.空心菱形
  • 3.判断用户输入类型

1.接收用户输入

  • 利用Scanner类来获取用户从键盘上的输入内容

首先引入Scanner

其中的System.in是扫描系统控制台的输入

接下来调用方法,若用input.nextInt()只能获取到输入类型为整型的数据,类似的input.nextDouble()等等也是,但是有两个可以获取全部类型的方法:

String str1 = input.next();
String str2 = input.nextLine();
           

但是注意,它们两个的返回类型都是String。

这两个方法的不同:

next()方法是接收文字,nextLine()方法是接收一行文字,这两种方法不能同时用,因为换行会导致nextLine()接收到的为空;

next()方法可以空格或回车结束,而nextLine()只能用回车才能结束,也就是next()不能够接收空格,也不能够接收无效的字(如单个空格,或者以空格为开头的输入只能拿到后面的输入)。

2.程序执行结构

  • 顺序结构

    按照语句出现的顺序执行

  • 分支结构

    根据条件成立与否执行

  • 循环结构

    重复执行某一循环体,直到条件不满足为止(循环结构一定要有出口)

2.1.分支结构

2.1.1.if条件结构

  • if 条件结构是根据条件判断之后再做处理
if (条件语句){…} 
if (条件语句){…}else{…} 
if (条件语句){…}else if(条件语句){…} 
if (条件语句){…}else if(条件语句){…}else{…}
           

2.1.2.switch语句

switch(表达式){ 
case 取值 1: 语句块 1;break; 
case 取值 n: 语句块 n;break; 
default: 语句块 n+1;break; 
}
           
  • switch 语句有关规则

表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;

case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;

default 子句是可选的;

break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写 break 则直接往下面执行;

case 后面的执行体可写{ }也可以不写{ }

2.2.循环结构

2.2.1.while循环

  • 符合条件,循环继续执行;否则,循环退出
  • 特点:先判断,再执行
while(条件表达式){ 
	//语句块; 
}
           
  • 使用 while 循环的步骤

    1)分析循环条件和循环操作

    2)套用 while 语法写出代码

    3)检查循环是否能够退出

2.2.2.do-while 循环

  • 先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出
  • 特点:先执行,再判断
do { 
	//循环操作 
}while ( 条件表达式 );
           
  • while 循环和 do-while 循环的区别?

    while:先判断条件,如果条件满足,再执行循环操作;

    do while:先执行一遍循环操作,然后再判读条件,如果条件满足,继续执行循环操作。

一般来说,do-while循环比while循环应用得更少。

2.2.3.for循环

for(初始化参数;判断条件;更新循环变量){ 
	//循环体; 
}
           
  • 两种特殊情况

两个分号左右两边默认不写也可以,但是两个分号中间不写默认就是true,也就是for( ; ; )就等于for( ;true; )死循环。

for(System.out.println("1");;System.out.println("1")){
 	System.out.println("3");
}
           

程序会先执行定义变量的位置,也就是先打印1;

变量定义完了之后判断条件,满足条件true执行大括号中内容,也就是打印3;

然后进行循环变量更新,打印2;

再判断条件,满足条件执行大括号内容打印3;

再循环变量更新……

也就是1 3 2 3 2 3 2……

2.3.循环嵌套

  • 外层循环控制的是 行数
  • 内层循环控制的是 列数
for(int i=0;i<10;i++){
	for(int j=0;j<10;j++){
		System.out.println("* ");//print去掉ln打印不换行
	}
	System.out.println();
}
           

可以打印出十行十列的*

2.4.终止循环

2.4.1.基本语句

  • break与continue语句

break是用于终止本轮所有次循环。即不执行本次循环中break后面的语句,直接跳出循环。

continue是用于终止本轮本次循环。即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。

2.4.2.退出多重循环

给循环取一个别名,如haha:

public static void main(String[] args) {
		haha:for(int i=0;i<10;i++) {
			for(int j=0;j<10;j++) {
				System.out.println("i="+i+" , j="+j);
				if(i==5 && j==5) {
					break haha;
				}
			}
		}
	}
           

直接break haha即可。

2.5.图形的打印

2.5.1.直角三角形

如图:

*
***
*****
*******
           

解决方案:

  • 外层循环控制行数:4
  • 内层循环控制列数:第一行时循环1次,第二行时循环3次,第三行时循环5次,第四行时循环7次
for(int i=0;i<4;i++){
	//i: 0 1 2 3
	for(int j=0;j<i*2+1;j++){
		System.out.print("*");
	}
	System.out.println();
}
           

2.5.2.等腰三角形

如图:

* 
  ***
 *****
*******
           

解决方案:

  • 外层循环控制行数:4

对于内层循环,先将空格部分用-表示出来:

---* 
--***
-*****
*******
           

于是可以将内层循环分成两部分:

  • 内层循环1:控制空格列数:第一行时3个空格,第二行时2个空格,第三行时1个空格,第四行是0个空格
  • 内层循环2:控制*号个数:第一行时循环1次,第二行时循环3次,第三行时循环5次,第四行时循环7次
for(int i=0;i<4;i++){
	//i: 0 1 2 3
	for(int j=i+1;j<4;j++){
		System.out.print(" ");
	}
	for(int j=0;j<i*2+1;j++){
		System.out.print("*");
	}
	System.out.println();
}
           

2.5.3.实心菱形

如图:

*
  ***
 *****
*******
 *****
  ***
   *
           

解决方案:

for(int i=0;i<4;i++){
	//i: 0 1 2 3
	for(int j=i+1;j<4;j++){
		System.out.print(" ");
	}
	for(int j=0;j<i*2+1;j++){
		System.out.print("*");
	}
	System.out.println();
}
for(int i=0;i<4;i++){
	//i: 0 1 2 3
	for(int j=0;j<i+1;j++){
		System.out.print(" ");
	}
	for(int j=0;j<(2-i)*2+1;j++){
		System.out.print("*");
	}
	System.out.println();
}
           

2.5.4.空心菱形

如图:

*
  * *
 *   *
*     *
 *   *
  * *
   *
           

解决方案:

3.判断用户输入类型

利用hasNextInt()函数判断输入的是否为整型:

Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字");
if(input.hasNextInt()){
	int num = input.nextInt();
	System.out.println("你输入的是:"+num);
}