一:键盘录入数据
1、导包:import java.util.Scanner;
2、创建对象:Scanner sc = new Scanner(System.in);
3、接收数据:数据类型 x=sc.next数据类型() 例:int x=sc.nextInt();
字符型:String x=sc.next();
import java.util.Scanner;
public class Practice {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int a= sc.nextInt();
}
}
4、next()与nextLine()的区别:
1、单独使用的时候效果一样
2、nextLine()可以接收一些特殊字符 如空格 、tab 、回车等,而next()直接忽略接收 。当有两个键入语句时,nextLine() 在下方,当你输入第一个数据后按回车,nextLine() 会接收回车,输出后会空出一行。
import java.util.Scanner;
public class One {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a=sc.next();
String b=sc.nextLine();//键入上一行数据后,回车,这时回车会被b接收。
System.out.println(a);
System.out.println(b);
}
}
二:流程控制分类
1、顺序结构:按照自上而下的顺序执行代码。
2、选择结构
(1) if语句:if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
例:获取三个数据中的最大值
import java.util.Scanner;
public class Practice {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int a= sc.nextInt();
System.out.println("请输入第二个数据:");
int b= sc.nextInt();
System.out.println("请输入第三个数据:");
int c= sc.nextInt();
if (a>b){ //if语句的嵌套实现
if(a>c){
System.out.println("最大值为:"+a);
}else {
System.out.println("最大值为:"+c);
}
}else {
if(b>c){
System.out.println("最大值为:"+b);
}else {
System.out.println("最大值为:"+c);
}
}
}
}
(2) switch语句格式: 表达式的取值:byte,short,int,char JDK1.5以后可以是枚举 JDK1.7以后可以是String
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
注意事项:case后面只能是常量,不能是变量,且多个case后的值不能出现相同的值。
default和beak根据情况而定可以省略,一般不建议;default的位置可以在switch语句任意位置。
例:根据键盘录入的数值1,2,3,…7输出对应的星期一,星期二,星期三…星期日。
import java.util.Scanner;
public class Spas {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean flag = true;
while (flag) { //如果没有输入正确的数,while将循环执行switch语句,且不会停止。
System.out.println("请输入一个数:");
int n = sc.nextInt();
switch (n) {
case 1:
System.out.println("这是星期一");
flag = false;
break;
case 2:
System.out.println("这是星期二");
flag = false;
break;
case 3:
System.out.println("这是星期三");
flag = false;
break;
case 4:
System.out.println("这是星期四");
flag = false;
break;
case 5:
System.out.println("这是星期五");
flag = false;
break;
case 6:
System.out.println("这是星期六");
flag = false;
break;
case 7:
System.out.println("这是星期天");
flag = false;
break;
default:
System.out.println("请输入一个正确的数");
break;
}
}
}
}
3、循环结构
(1)for循环:
for(初始化语句;判断条件语句;控制条件语句) { // 判断条件语句是Boolean表达式,判断循环是否继续执行循环体语句。
循环体语句;
} //for循环结束后,初始化语句中定义的变量在外部无法访问
例:水仙花数:所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。(153 = 1*1*1 + 5*5*5 + 3*3*3 )
代码示例
public class ForPractice {
public static void main(String[] args) {
int geWei;
int shiWei;
int baiWei;
for(int i=100;i<1000;i++){
geWei=i%10; //先求i的各个位的数字
shiWei=i/10%10;
baiWei=i/100;
if(i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei){
System.out.println(i+"是一个水仙花数");
}
}
}
}
(2)while循环: while(判断条件语句) {
循环体语句;
}
例:我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?
public class WhilePractice {
public static void main(String[] args) {
double i=0.01;
int t=0;
while (i<=8848){
i=i*2;
t++;
}
System.out.println(t);
}
}
(3)do while循环: do {
循环体语句;
}while((判断条件语句);
//do…while循环在判断条件不成立的情况下也会执行一次循环体; for循环和while循环只有在条件成立的时候才会去执行循环体 。
例:输出helloworld;
public class DoWhileDemo1 {
public static void main(String[] args) {
int x = 3;
do{
System.out.println("HelloWorld");
}while (x<3);
}
}
三:跳转控制语句
1、break
使用场景:在选择结构switch语句中,在循环语句中
作用:结束switch选择语句,结束循环语句(如果有多层循环,放在最内层,只能结束单层循环)
如果想结束多层循环可以给循环前面加上标签名;
wc:for (int i = 1; i <= 9; i++) {
nc:for (int j = 1; j <= i; j++) {
if(j==4){
break wc; //当j等于4时就将整个循环全部结束;
}
System.out.print(i + "*" + j + "=" + (i * j) + "\t");
}
System.out.println();
}
2、continue
使用场景:在循环语句中
作用:结束本次循环,不会结束整个循环;
for(int i=1;i<=10;i++){
if(i==3){
continue; //跳出当次循环,继续执行后面的循环。
}
System.out.println(i);
}
结果中不会输出3;但会输出1到10其它数;如果是break,结果是1 2。
3、reture:常用的功能是结束一个方法。
for(int i=1;i<=10;i++){
if(i==3){
return; //结束main方法,结束程序执行,不管后面还有什么程序,都会停止,正常情况下,return在方法中使用
}
System.out.println(i);
}
System.out.println("=================================================");
System.out.println("HelloWorld");
结果中只输出12;整个程序全部停止运行,for循环下面的程序都会进行。总的来说,结束循环其实是结束了main方法