for循环的逻辑关系 九九乘法表
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
错误理解:不清楚具体的语句块执行步骤,只知大概,不知具体;
for循环时(1初始化;2判断;4迭代){
3循环体}
for循环嵌套时(1初始化;2判断;7迭代){
for(3初始化;4判断;6迭代){
5循环体}
}
注:1、for的单循环初始化只执行一次;嵌套循环要执行两次;
2、嵌套循环中内层循环可看作外层循环的循环体;
switch细节:1、switch(表达式)与case(常量)数据类型要保持一致或者类型不同但可以实现case中数据类型自动转换为switch表达式中的数据类型;
2、穿透;switch表达式与某一case相匹配,执行完后发现break语句,则执行到底;
3、switch表达式中数据类型只能为:byte、short、int、enum、char、string;
4、case语句中表达式只能是常量而非变量;
实现switch表达式与case表达式数据类型不同但能相互转换
Scanner trya=new Scanner(System.in);
System.out.println("请输入你的分数");
int a=trya.nextInt();
switch(a){
case 97:
System.out.println(a);
break;
case 'c':
System.out.println("字符c已经自动转换成和a通样的数据类型了");
System.out.println(a);
break;
编写一个Java程序,使用switch结构实现:判断一个整数成绩得分处在什么档次,条件为:成绩大于或等于90分为优,成绩80~90为良,70~80为中,60~70为及格,小于60为不及格。要求成绩分数通过小窗口提示框进行输入
String score = javax.swing.JOptionPane.showInputDialog("输入你的分数:");
int a = Integer.parseInt(score);
if(a>100|a<0){System.out.println("你的分数不在查询范围内");}
int b=a/10;
switch(b){
case 10:
case 9:
System.out.println("你的成绩为优");
break;
case 8:
System.out.println("你的成绩为良");
break;
case 7:
System.out.println("你的成绩为中");
break;
case 6:
System.out.println("你的成绩为及格");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
System.out.println("你的成绩为不及格");
break;
default;
误区:数字太多,数据类型也要一致,无法实现用case写出这么多数字,想到用多维数组代替一个数字范围,然后把数组赋值给一个变量,结果语法错误,无法通过编译;
解决思路1:把大范围的数字缩小一个范围,然后使用case常量来表达该范围,除法是解决数字大范围缩小化的一个解决方式。