JavaSE—基础知识(二)(选择语句/循环语句/控制跳转语句)
1.从键盘录入数据
a:导包
格式:import java.util.Scanner;
b:创建键盘录入对象
格式:Scanner sc = new Scanner(System.in);(使用像IDEA,ecipse这种java编译工具时一般不需要导包,系统会帮你完成的)
c:通过对象获取数据
格式:int x = sc.nextInt();(int类型的数据)
例如:从键盘输入两个数,求这两个数的最大值。
package org.wetmo.demo1;
import java.util.Scanner;
public class MyDemo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入两个数num1,num2:");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int max=(num1>=num2)?num1:num2;
System.out.println("最大值是"+max);
}
}
2.顺序结构语句
2.1 if语句
if(比较表达式或者是boolean类型的值) {
语句体;
}
if(比较表达式) {
语句体1;
}else {
语句体2;
}
注意事项:else后面是没有比较表达式的,只有if后面有。
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
...
else {
语句体n+1;
}
例1:第二种格式的应用
//需求:键盘录入一个成绩,判断并输出成绩的等级。
/*
90-100 优秀
80-89 良
70-79 中
60-69 及格
0-59 差
*/
package org.wetmo.demo1;
import java.util.Scanner;
public class MyDemo1 {
public static void main(String[] args) {
System.out.println("输入成绩");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=90&&score<=100){
System.out.println("A等");
}else if(score>=80&&score<=89){
System.out.println("B等");
}
else if(score>=70&&score<=79){
System.out.println("C等");
}
else if(score>=60&&score<=69){
System.out.println("D等");
}
else if(score<60){
System.out.println("E等");
}else{
System.out.println("输入错误");
}
}
}
例2:if语句的嵌套
package org.wetmo.demo1;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入三个数num1,num2,num3:");
int num1 = sc.nextInt();
int num2 = sc.nextInt();
int num3 = sc.nextInt();
int max=0;
if(num1>=num2){
if(num1>=num3){
max=num1;
}else{
max=num3;
}
}else{
if(num2>=num3){
max=num2;
}else{
max=num3;
}
}
System.out.println("这三个数中最大的数是"+max);
}
}
2.2 switch语句
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
....
default:
语句体n+1;
break;
}
(1)switch表示这是switch语句
表达式的取值:byte,short,int,char(long类型不能作为switch的取值)
JDK5以后可以是枚举(什么是枚举,以后再讲)
JDK7以后可以是String
(2)case后面跟的是要和表达式进行比较的值
(3)语句体部分可以是一条或多条语句
(4)break表示中断,结束的意思,可以结束switch语句
(5)default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
- 举例:键盘录入月份,输出对应的季节
package org.wetmo.demo1;
import java.util.Scanner
public class MyDomo2 {
public static void main(String[] args) {
System.out.println("输入月份:");
Scanner sc = new Scanner(System.in);
int month = sc.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("输入错误");
break;
}
}
}
3.循环结构
循环结构:循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
3.1 for循环
for(初始化表达式语句;判断条件语句;控制条件语句) {
循环体语句;
}
例1:需求:在控制台输出所有的”水仙花数”
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
举例:153就是一个水仙花数。
153 = 1*1*1 + 5*5*5 + 3*3*3 = 1 + 125 + 27 = 153
package org.wetmo.demo1;
public class demo {
public static void main(String[] args) {
//求出这个数的每个数位上的值
for(int i=100;i<=999;i++){
int bw=i/100;
int sw=i/10%10;
int gw=i%10;
if(i==bw*bw*bw+sw*sw*sw+gw*gw*gw){
System.out.println(i);
}
}
}
}
例2:打印输出乘法口诀表。
package org.wetmo.demo1;
public class demo {
public static void main(String[] args) {
//求出这个数的每个数位上的值
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+j*i+"\t");
}
System.out.println();
}
}
}
3.2 while语句
初始化条件语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
a:执行初始化条件语句;
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
例如:统计”水仙花数”共有多少个。
package org.wetmo.demo1;
import java.util.Scanner;
public class demo {
public static void main(String[] args) {
int i=100;
int n=0;
while(i<=999){
int bw=i/100;
int sw=i/10%10;
int gw=i%10;
if(i==bw*bw*bw+sw*sw*sw+gw*gw*gw){
System.out.println(i);
n++;
}
i++;
}
System.out.println("水仙花个数为"+n);
}
}
3.3 do…while语句
初始化条件语句;
do {
循环体语句;
控制条件语句;
}while(判断条件语句);
a:执行初始化条件语句;
b:执行循环体语句;
c:执行控制条件语句;
d:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
e:回到b继续。
请在控制台输出数据1-10。
package org.wetmo.demo1;
public class demo {
public static void main(String[] args) {
int i=1;
do {
System.out.println(i);
i++;
}while(i<=10);
}
}
(1):do…while循环至少执行一次循环体。而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。
(2):A: 如果你想在循环结束后,继续使用控制条件的那个变量,用 while循环,否则用for循环。不知道用for循环。因为变量及早的从内存中消失,可以提高内存的使用效率。
B:建议优先考虑for循环,然后是while循环 ,最后是do…while循环
4.控制跳转语句(break,continue,return)
4.1 break(中断)
- 使用场景:
(1)在选择结构switch语句中
(2)在循环语句中 - 作用:
a:退出单层循环
b:退出多层循环(几乎不使用)
要想实现这个效果,就必须知道一个东西;带标签的语句;
格式:标签名:语句
4.2 continue(继续)
- 使用场景:在循环语句中
- 作用:跳出一次循环,执行下一步操作
举例
for(int x=1; x<=10; x++) {
if(x%3==0) {
//在此处填写代码 // break;
// continue;
// System.out.println(“Java基础班”);
}
System.out.println(“Java基础班”);
}
//我想在控制台输出2次:“Java基础班“
//我想在控制台输出7次:“Java基础班“
//我想在控制台输出13次:“Java基础班“
4.3 return(返回)
- 作用:return 就是退出一个方法(后面文章会详细讲述)。