Java基础练习之流程控制(一)
1、编写程序,从键盘接收整数参数。如果该数为1-7,打印对应的星期值,否则打印“非法参数”。
import java.util.Scanner; public class TestSwitch{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入星期值:"); int week = input.nextInt(); switch(week){ case 1: System.out.println("星期一:Monday"); break; case 2: System.out.println("星期二:Tuesday"); break; case 3: System.out.println("星期三:Wednesday"); break; case 4: System.out.println("星期四:Thursday"); break; case 5: System.out.println("星期五:Friday"); break; case 6: System.out.println("星期六:Saturday"); break; case 7: System.out.println("星期天:Sunday"); break; default: System.out.println("非法星期值"); break; } } }
运行:
2、从键盘分别输入年、月、日,判断这一天是当年的第几天。
import java.util.Scanner; public class TestDaysOfYear{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("年:"); int year = input.nextInt(); System.out.print("月:"); int month = input.nextInt(); System.out.print("日:"); int day = input.nextInt(); int days = day; //加前面几个月的满月天数 switch(month){ case 12: //前面11个月的总天数 //days += 第11月的天数; days += 30; case 11: //前面10个月的总天数 //days += 第10月的天数; days += 31; case 10: days += 30;//九月 case 9: days += 31;//八月 case 8: days += 31;//七月 case 7: days += 30;//六月 case 6: days += 31;//五月 case 5: days += 30;//四月 case 4: days += 31;//三月 case 3: days += 28;//二月 /*if(闰年){ days++; } */ if(year % 4 ==0 && year % 100 != 0 || year%400==0){ days++; } case 2: days += 31;//一月 } System.out.println(year + "年" + month + "月" + day + "日是这一年的第" + days + "天"); /* int days = 0; switch(month){ case 1: days = day; break; case 2: days = 31 + day; break; case 3: //days = 31 + 二月的天数 + day; days = 31 + 28 + day; break; case 4: //days = 31 + 二月的天数 + 31 + day; days = 31 + 28 + 31 + day; break; .... } if(闰年 && month >2){ days++; } */ } }
3、Switch是否能作用在byte上,是否能作用在long上,是否能作用在String上?
答:
- switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是int、 short、char 或者 byte。
- long不能作用于swtich。
- JDK1.5之后支持枚举。
- JDK1.7新加入了String类型。
4、写程序:从键盘上读入一个学生成绩,存放在变量score中,根据score的值输出其对应的成绩等级:
score>=90 等级:A
70=<score<90 等级:B
60=<score<70 等级:C
score<60 等级:D
import java.util.Scanner; public class Exam1 { public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.print("请输入学生的成绩:"); int score = input.nextInt(); if(score>=90){ System.out.println("等级:A"); }else if(score>=70){ System.out.println("等级:B"); }else if(score>=60){ System.out.println("等级:C"); }else{ System.out.println("等级:D"); } /* if(score>=90){ System.out.println("等级:A"); }else if(score<90 && score>=70){ System.out.println("等级:B"); }else if(score<70 && score>=60){ System.out.println("等级:C"); }else{ System.out.println("等级:D"); } */ } }
5、根据指定月份,打印该月份所属的季节。
3,4,5 春季
6,7,8 夏季
9,10,11 秋季
12, 1, 2 冬季
if-else if-else语句:
[第一种]
if(x==3 || x==4 || x==5) System.out.println(x+"春季"); else if(x==6 || x==7 || x==8) System.out.println(x+"夏季"); else if(x==9 || x==10 || x==11) System.out.println(x+"秋季"); else if(x==12 || x==1 || x==2) System.out.println(x+"冬季"); else System.out.println(x+"月份不存在");
[第二种]
if(x>12 || x<1) System.out.println(x+"月份不存在"); else if(x>=3 && x<=5) System.out.println(x+"春季"); else if(x>=6 && x<=8) System.out.println(x+"夏季"); else if(x>=9 && x<=11) System.out.println(x+"秋季"); else System.out.println(x+"冬季");
switch-case语句:
import java.util.Scanner; public class TestSeason{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("请输入当前月份:"); int month = input.nextInt(); switch(month){ case 3: case 4: case 5: System.out.println("春季"); break; case 6: case 7: case 8: System.out.println("夏季"); break; case 9: case 10: case 11: System.out.println("秋季"); break; case 12: case 1: case 2: System.out.println("冬季"); break; default: System.out.println("非法月份"); } } }
6、求ax^2+bx+c=0方程的根。
import java.util.Scanner; public class Exer5{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("一元二次方程:ax^2+bx+c=0"); System.out.print("请输入参数a:"); double a = input.nextDouble(); System.out.print("请输入参数b:"); double b = input.nextDouble(); System.out.print("请输入参数c:"); double c = input.nextDouble(); if(a!=0){ double temp = b*b - 4*a*c; if(temp==0){ double x = -b/(2*a); System.out.println("该方程是一元二次方法,有两个相同解:" + x); }else if(temp>0){ double sqrt = Math.sqrt(temp); double x1 = (-b+ sqrt)/(2*a); double x2 = (-b- sqrt)/(2*a); System.out.println("该方程是一元二次方法,两个不同解:" + x1 +"," + x2); }else{ System.out.println("该方程是一元二次方法,在实数范围内无解!"); } }else{ if(b!=0){ double x = -c/b; System.out.println("该方程是一元一次方程,有一个解:" + x); }else{ System.out.println("不是方程,是一个等式"); if(c == 0){ System.out.println("等式成立"); }else{ System.out.println("等式不成立"); } } } } }
7、在JAVA中,如何跳出当前的多重嵌套循环?
答:用break或return 的方式。