文章目录
1.接收用户输入
- 利用Scanner类来获取用户从键盘上的输入内容
首先引入Scanner
Scanner input = new Scanner(System.in);
其中的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(初始化参数;判断条件;更新循环变量){
//循环体;
}
- 两种特殊情况
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);
}