Scanner对象
Java给我们提供了一个可以实现程序和人的交互,我们可以获取用户的输入,java.util.Scanner 是Java5的新特征,我们可以通过Scanner类来获取用户的输入
基本语法
Scanner scanner = new Scanner (System.in);
Scanner.close();切记记得关闭Scanner 不然会一直占用io流
可以通过Scanner类的next()与nextline()方法获取输入的字符串,在读取前我们一般需要 使用hasNext ()与hasNextLine()判断是否还有输入的数据
Next()与NextLine()的区别
-
Next()
-
一定要读取到有效字符后才可以结束输入
-
对输入有效字符之前遇到的空白,Next()会自动将其去掉
-
只有输入有效字符以后才将其后面遇到的空白字符作为结束符或分隔符
-
Next()不能得到带有空格的字符串
Scanner scanner = new Scanner (System.in); Scanner.close();切记记得关闭Scanner 不然会一直占用io流
-
-
NextLine()
-
以Enter为结束符,也就是说NextLine()方法返回的是按下回车键之前所有的字符
-
可以获得空白符号
-
switch多选择结构
switch case和if 多选择结构类似都是属于多选择结构
用来判断一个变量与一系列的值中某个值是否相等,每个值称为一个分支
switch 语句中的变量可以是8大基本类型,但在java SE7开始,switch也支持字符串String类型了
int a = 1;
switch (a){
case 1:
//输出语句
break;
case 2:
//输出语句
break;
default:
//输出语句
}
可以有很多个case语句,break的重要的是防止case穿透,如果不加break,当case1成立,就会接着进行执行下面的case2,case3,,,直至语句中出现break或者执行到default语句执行完毕,才会停止执行
if选择结构
-
If单选则结构:
if(布尔表达式){ //如果布尔表达式正确就执行这块代码 }
-
If双选则结构:
if(布尔表达式){ //如果布尔表达式正确就执行这块代码 }else{ //如果错误就执行这块代码 }
-
If多选择结构:
if(布尔表达式1){ //如果布尔表达式为1正确就执行这块代码 }else if(布尔表达式2){ //如果布尔表达式为2正确就执行这块代码 }else if(布尔表达式3){ //如果布尔表达式为3正确就执行这块代码 }else{ //如果都不对就执行这块代码 }
if 句至多有一个else,且在else if之后
if 语句可以有若干个else if,但他们必须在else语句之前
一旦其中一个else if检测为true,则跳过剩下所有语句
while循环结构
while是最基本的循环,只要表达式一直为true,循环就会一直执行下去,如果循环条件一直为true,会变成死循环,在实际开发中我们要避免死循环的存在,少部分情况下我们需要死循环,例如在做服务器的监听与请求时可能会需要使用到死循环,while的循环结构为
while (布尔表达式){ 循环体内容 }
do····while 循环
do{ //执行代码块 }while(布尔表达式);
while循环结构与do····while 循环之间的区别
-
对于while循环来说,如果不满足条件就不会执行代码块,而对于do····while来说,不管布尔表达式满不满足条件都会先执行一次代码块中的代码。就是说do····while循环最少都会执行一次代码块中的代码
-
while是先判断在执行,而do····while是先执行再判断
For循环 (重要!!)
虽然所有的循环结构都可以使用while和do···while循环结构来实现,但是Java给我们提供了一个更为方便的for循环,使一些循环结构变为更加简单
For 循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构
For循环的执行次数是在最开始就设定好的,语法如下
for(初始化;布尔表达式;更新语句){ //代码块 }
增强For循环(foreach语句 java5中新增的)
foreach语句是for语句的特殊简化版本,不能完全取代for语句,但任何foreach语句都可以改写为for语句版本,foreach并不是一个关键字,习惯上将这种特殊的for语句称为foreach语句,主要是用来遍历数组,代码如下
int [] number = {1,2,3,4,6,}; //用普通for循环 for(i=0;i<5;i++) { System.out.println(number[i]); } //增强for循环 for(int x:number) { System.out.println(x); } for(声明语句 : 表达式) { //代码句子 //声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用范围限定在循环体语句块,其值与此时数组元素的值相等 //表达式:表达式是要访问的数组名,或是返回值为数组的方法 }
break 与continue的区别
-
break在任何循环语句中的主体部分,均可使用break控制循环的流程
-
break用于强行退出循环体,不执行循环中剩余的语句。(break也可以在switch语句中使用以防止case穿透)
-
continue 语句用在循环语句中,用来种植某次循环过程,跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
练习小题
-
计算0到100之间奇数和偶数的和
//利用for循环来实现 int qnumber = 0;//定义奇数的和 int onumber = 0;//定义偶数的和 for(int i = 0;i<=100;i++) { if(i%2!=0) { qnumber = i+qnumber; } if(i%2==0) { onumber = i+onumber; } } System.out.println("奇数的和为"+qnumber) System.out.println("偶数的和为"+qnumber) //用while循环结构实现 int qnumber = 0;//定义奇数的和 int onumber = 0;//定义偶数的和 int i = 0; while(i<=100) { if(i%2!=0) { qnumber = i+qnumber; } if(i%2==0) { onumber = i+onumber; } } System.out.println("奇数的和为"+qnumber); System.out.println("偶数的和为"+qnumber);
-
用while或for循环输出1-1000之间能被五整除的数,并每行输出三个
//用for循环实现 int number = 0; for (; number <= 1000; number++) { if (number%5==0) { System.out.print(number+"\t"); if (number%15==0) { System.out.println(); } } } //用while循环实现 int number = 0; while (number<=1000) { if (number%5==0) { System.out.print(number+"\t"); if (number%15==0) { System.out.println(); } } number++; }
-
用循环写出乘法表
for (int j = 1; j <= 9; j++) { for (int i = 1; i <= j; i++) { System.out.print(i+"*"+j+"="+(j*i)+"\t"); } System.out.println();//每当外层循环跑完一遍就换一行 }