(一)switch语句
注意事项:
1.switch语句只能用byte、short、 char、 int ,从jdk7.0开始可以用字符串类型。
2.case语句后面只能跟常量,不能跟变量、表达式。
3.switch语句的停止条件:选项匹配之后只有遇到break或者结束switch的大括号才会结束执行,否则会按代码顺序执行,且不会再判断选项是否匹配。
4.不管代码顺序如何,匹配时优先判断case,最后判断default。
(二)死循环写法
for( ; ; ) 、while(true)
(三)while
while(false){},在编译时会报错,因为java编译器中不允许有根本不能执行的代码出现。
但是boolean flag=false,while(flag){},编译时不会报错,因为编译时只会识别出flag是boolean类型,但不知道flag变量具体的值,所以编译会通过,但是执行时该代码段依然不会执行。
(四)题目举例
1、数字游戏
规则:
1.产生一个1-10之间的随机数
2.接受键盘录入一个数字,判断录入的数字是否与随机数相等
3.最多只能猜三次
产生随机数的步骤:
1.创建一个随机数对象 Random
2.调用随机数对象的nextInt()方法即可产生一个随机数
3.导包 import java.util.*;
接受键盘录入数字的步骤:
1.创建一个扫描器 Scanner
2.调用扫描器的方法nextInt(),扫描数据,键盘录入数据默认为字符串,nextInt()将字符串强制转换为int。
3.导包 import java.util.*;
代码如下:
import java.util.*;
class work3
{
public static void main(String[] args)
{
//创建一个随机数对象
Random random=new Random();
//调用随机数对象的nextInt()方法即可产生一个随机数
int num=random.nextInt(11);//0-n-1
//System.out.println("随机数是:"+num);
//接受键盘录入
//创建一个扫描器
Scanner scanner=new Scanner(System.in);
//调用扫描器的方法,扫描数据
int times=0,flag=0;
while(times<3){
times++;
int guess=scanner.nextInt();//键盘录入数据
if(guess==num)
{
flag=1;
System.out.println("猜对了!!!");
break;
}
else if(guess>num)
System.out.println("猜大了~~~还剩余"+(3-times)+"次");
else
System.out.println("猜小了~~~还剩余"+(3-times)+"次");
}
if(flag==0)
System.out.println("很遗憾猜错了");
}
}
2、用户登录
要求:从键盘输入用户名和密码,若输入的用户名和密码分别为root,admin显示登录成功,否则显示用户名或密码错误。
键盘录入字符串的步骤与录入数字步骤相同,只是调用的是next()方法。
判断两个字符串是否相等时,用str1.equals(str2),不能用==。
==的作用:
1.普通数据类型,用于判断两个数据的值是否相等,如int,char,byte等。
2.引用数据类型,用于判断两个变量的内存地址是否相等,即是否指向同一个内容,如字符串,数组等。
代码如下:
import java.util.*;
class work2
{
public static void main(String[] args)
{
//创建扫描器对象
Scanner scanner=new Scanner(System.in);
System.out.println("请输入您的用户名");
//调用扫描器的扫描方法,扫描数据
String name=scanner.next();//表示录入字符串
System.out.println("请输入您的密码");
String password=scanner.next();
if("root".equals(name) && "admin".equals(password))
System.out.println("登录成功!");
if(!"root".equals(name))
System.out.println("用户名错误");
if(!"admin".equals(password))
System.out.println("密码错误");
//System.out.println("abc".equals(line));//字符串是引用数据类型,==用于引用数据类型,比较的是内存地址,即字符串的首地址
}
}
3、break关键字默认是作用于当前层循环,能否使其作用于其他循环?(continue方法类似)
通过和标签一起使用,标签的使用规则:
1.标签的命名和标识符的命名规则一样。
2.若可能因为代码无法执行导致编译不通过,则最好不用标签。
class if1
{
public static void main(String[] args)
{
outer:for(int i=0;i<2;i++){
inner:for(int j=0;j<3;j++){
System.out.println("Hello World!");
break outer;
}
}
}
}