*顺序结构比较简单,就是按照代码书写的顺序一行一行执行。
*单线程下一定按照代码顺序执行,多线程则不一定。
public static void main(String[] args) { int a=2000; if(a%100==0){ //判断是否为世纪闰年 if(a%400==0){ System.out.println(a+"是世纪闰年"); }else{ System.out.println(a+"不是闰年"); } }else{ //普通闰年 if((a%4)==0){ System.out.println(a+"是普通闰年"); }else{ System.out.println(a+"不是闰年"); } } }
例2:判断一个数字是正数还是负数
public static void main(String[] args) { int a = 2000; if (a > 0) { System.out.println(a + "是正数"); } else if (a < 0) { System.out.println(a + "是负数"); } else { System.out.println(a + "是0"); } }
注意:
1.(悬垂else问题)if/else语句中可以不加大括号,但是也可以写语句(只能写一条语句),此时else遵循就近原则,会和最接近的if匹配。
2.(分号问题)此处在if条件语句后多写了一个分号,导致分号成为了if语句的语句体,而{}中的1代码已经成为了和if无关的代码块,所以不满足a==20的条件,程序依然会输出haha
2.2switch语句(可以和if/else语句互换)
例:根据day的值输出星期
public static void main(String[] args) { int day=4; switch (day){ case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("输入有误"); break; } }
注意:
1.switch语句在每一个case后面一定要加上break;表示终止。若没有break;终止,当switch碰到满足条件的分支后,会一直执行到switch最后。
2.如果switch中的值没有匹配的case,就会执行default中的语句。建议switch语句最好都要带上default.
3.switch中的值只能是整数、枚举、字符、字符串
4.switch不能表达复杂的条件
5.switch虽然支持嵌套,但是不推荐,switch的使用局限性是比较大的。
3.1while循环
1)基本语法格式:
while(循环条件){
循环语句;
}
当循环条件为真时,则执行循环语句,否则循环结束。
例1:计算1-100的和
public static void main(String[] args) { int a=1; int sum=0; while(a<=100){ sum+=a; a++; } System.out.println(sum); } //sum=5050
例2:计算1!+2!+3!+4!+5!
public static void main(String[] args) { int num=5; int result=0; //1!+2!+3!+..+5! while (num>=1) { //具体的阶乘数 1!。。。。5! int temp=1; int tempResult=1; while (temp<=num){ tempResult*=temp; temp++; } num--; result+=tempResult; } System.out.println(result); }
由例2我们可以发现,当一段代码中带有多重循环时。代码的复杂程度就大大提高了,比较复杂的代码容易出现错误,所以后面我们采用方法来解决这个问题。
3.2break
break的功能是让循环提前结束,表示跳出本次循环,循环终止。当有多层循环嵌套是,break采用就近原则。
例:找到100-200中的第一个3的倍数
public static void main(String[] args) { int num=100; while (num<=200){ if(num%3==0){ System.out.println("找到了3的倍数为:"+num); break;//执行到break就会让循环结束 } num++; } } //输出为 找到了的倍数为:102
3.3continue
continue的功能是跳过这次循环,立即进入下次循环。
若需要结束当下循环,使用continue表示继续执行下一次循环。
例:找到100-200中所有3的倍数
public static void main(String[] args) { int num=100; while (num<=200){ if(num%3!=0){ num++;//不能忘记,否则会死循环 continue; } System.out.println("找到了3的倍数为:"+num); num++; } }
执行到continue语句的时候,就会立刻进入下一次循环(判定循环条件),从而不会执行到下方的打印语句。
3.4for循环
1)基本语法:
for(循环开始条件;循环终止条件;循环继续声明){
循环体;
}
2)for循环和while循环最大的区别:
while循环常用于不知道循环次数的情况;
for循环常用于知道循环次数的情况。
例:计算1!+2!+3!+4!+5!
public static void main(String[] args) { int sum=0; //表示当前进行的是哪一个数的阶乘 for(int i=1;i<=5;i++){ int temp=1; //实际进行阶乘操作 for (int j=1;j<=i;j++){ temp*=j; } sum+=temp; } System.out.println(sum); }
3.5 do while循环(了解)
基本语法:(先执行循环语句,再判定循环条件)
do{
循环语句;
}while(循环条件);
与while循环的区别:无论条件是否满足,do{}先执行一次
注意:do while循环最后的分号不能忘记;一般do while很少用到,不推荐使用。
输出:常用System.out,println()
输入:常用JDK提供的Scanner类读取字符串/整数/浮点数
例:
public static void main(String[] args) { //声明一个输入类的对象 Scanner scanner=new Scanner(System.in); System.out.println("请输入年龄:"); int age=scanner.nextInt(); System.out.println("请输入姓名:"); //读取字符串,next() String name=scanner.next(); System.out.println("请输入月薪:"); double sal= scanner.nextDouble(); System.out.println("姓名为:"+name+",年龄为:"+age+",薪资为:"+sal); scanner.close();//关闭方法 }
注意:当循环输入多个数据时,使用ctrl+z(windows上)来结束输入。
1.生成1-100之间的随机数(使用Random类)
public static void main(String[] args) { Random random=new Random(); int randomNum= random.nextInt(100); System.out.println(randomNum); }
2.系统自动生成一个随机整数(1-100), 然后由用户输入一个猜测的数字. 如果输入的数字比该随机数小, 提示 “低了”, 如果输入的数字比该随机数大, 提示 “高了” , 如果输入的数字和随机数相等, 则提示 “猜对了” .
public static void main(String[] args) { Random random=new Random(); int randomNum= random.nextInt(100); Scanner sc=new Scanner(System.in); int toGuess=randomNum; while (true){ System.out.println("请输入你猜测的数字(1-100):"); int num= sc.nextInt(); if(num>toGuess){ System.out.println("高了"); }else if(num欢迎分享,转载请注明来源:内存溢出
评论列表(0条)