1.用户交互Scanner
基本语法
Scanner s = new Scanner(system.in);
- next()
- 一定要读取到有效字符后才可以结束输入
- 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 只有输入有效字符后才可以将其后面输入的空白作为分隔符或者结束符
- next()不能得到带有空格的字符串
package Scanner; import java.util.Scanner; public class Demo01 { public static void main(String[] args) { //创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收:"); //判断用户有没有输入字符串 if (scanner.hasNext()==true){ //使用next方式接收 String str = scanner.next();//程序会等待用户输入完毕 System.out.println("输出的内容为:"+str); } scanner.close(); //凡是属于IO流的类,如果不关闭scanner会一直占用资源,要养成习惯,用完就关掉 } }
- nextLine()
- 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 可以获得空白
package Scanner; import java.util.Scanner; public class Demo02 { public static void main(String[] args) { //从键盘接收数据 Scanner scanner = new Scanner(System.in); System.out.println("使用nextLine方式接收:"); //判断是否还有输入 if (scanner.hasNextLine()==true){ String str = scanner.nextLine(); System.out.println("输出的内容为:"+str); } scanner.close(); } }
进阶练习
package Scanner; import java.util.Scanner; public class Demo03 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //从键盘接收数据 int i=0; float f=0.0f; System.out.println("请输入整数:"); //如果。。。那么 if (scanner.hasNextInt()){ i = scanner.nextInt(); System.out.println("整数数据"+i); }else { System.out.println("输入的不是整数数据!"); } System.out.println("请输入小数:"); //如果。。。那么 if (scanner.hasNextFloat()){ f = scanner.nextFloat(); System.out.println("小数数据"+f); }else { System.out.println("输入的不是小数数据!"); } scanner.close(); } }
进阶练习
package Scanner; import java.util.Scanner; public class Demo04 { public static void main(String[] args) { //我们可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入,并输出执行结果 Scanner scanner = new Scanner(System.in); //和 double sum =0; //计算输入了多少个数字 int m =0; //通过循环判断是否还有输入,并在里面对每一次进行求和和统计 while (scanner.hasNextDouble()){ double x = scanner.nextDouble(); m = m+1;//m++ sum = sum + x; System.out.println("你输入了第"+m+"个数据当前结果sum="+sum); } System.out.println(m + "个数的和为"+ sum); System.out.println(m + "个数的平均值是"+(sum/m)); scanner.close(); } }
2.顺序结构
-
Java的基本结构,一句一句执行
-
顺序结构是做简单的算法结构
-
从上到下顺序执行,是任何 一个算法都离不开的一种基本算法结构
package stracture; public class Demo01 { public static void main(String[] args) { System.out.println("hello1"); System.out.println("hello2"); System.out.println("hello3"); System.out.println("hello4"); System.out.println("hello5"); } }
3.选择结构:if/switch
3.1 if单选择结构
if(布尔值表达式){
//如果布尔表达式为true将执行的语句
}
package stracture;
import java.util.Scanner;
public class Demo02if {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
if (s.equals("Hello")){//判断字符串是否一致
System.out.println(s);
}
System.out.println("and");
scanner.close();
}
}
3.2 if双选择结构
if(布尔表达式){
//如果布尔表达式的值为true
}esle{
//如果布尔表达式的值为false
}
package stracture;
import java.util.Scanner;
public class Demo03if {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩");
int score = scanner.nextInt();
if (score>=60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
3.3 if多选择结构
if(布尔表达式1){
//如果布尔表达式1的值为true,执行代码
}esle if(布尔表达式2){
//如果布尔表2达式的值为true执行代码
}else if(布尔表达式3){
//如果布尔表达式3的值为true执行代码
}eles{
//如果以上布尔表达式都不为true执行代码
}
package stracture;
import java.util.Scanner;
public class Demo04if {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/*
* if语句,至多有一个else语句,else语句在所有else if 语句之后
* if 语句可以有若干给else if语句,他们必须在else语句之间
* 一旦其中一个else if 语句检测为true,其他的else if以及else语句都将跳过执行*/
System.out.println("请输入成绩");
int score = scanner.nextInt();
if (score==100){
System.out.println("恭喜满分");
}else if (score<100 && score>=90){
System.out.println("A级");
}else if (score<90 && score>=80){
System.out.println("B级");
}else if (score<80 && score>=70){
System.out.println("C级");
}else if (score<70 && score>=60) {
System.out.println("D级");
}else if(score<60 && score>=0){
System.out.println("不及格");
}else {
System.out.println("成绩不合法");
}
}
}
3.4 嵌套的if 结构
3.5 switch
package stracture;
public class Demo05Switch {
public static void main(String[] args) {
//case穿透,,,,,switch更适合用于匹配一个具体的值
char grade = 'F';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("及格");
break;
case 'D':
System.out.println("再接再厉");
break;
case 'E':
System.out.println("挂科");
break;
default:
System.out.println("未知等级");
}
}
}
switch(expression){
case value :
//语句
break; // 可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default: //可选
//语句
- byte、short、int或者char,从 JAVA SE 7 开始, switch支持字符串String类型,同时case标签必须为字符串常量或字面量
package stracture; public class Demo06Switch { public static void main(String[] args) { String name ="狂神"; //JDK7的新特性,表达式的结果可以是字符串!!! //字符的本质还是数字 //反编译 Java---class(字节码文件)---反编译(IDEA) switch (name){ case "秦姜": System.out.println("秦姜"); break; case "狂神": System.out.println("狂神"); break; default: System.out.println("弄啥嘞!"); } } }
4.循环结构
4.1 while循环结构
while (布尔表达式){
//循环内容
}
- 只要布尔表达式为true,循环就会一直执行
- 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环
- 少部分情况需要循环一直执行,比如服务器的请求响应,监听等
- 循环条件一直为true就会造成死循环,正常业务应当避免
package stracture; public class Demo07While { public static void main(String[] args) { //输出1~100 int i =0; System.out.println();//可以用i++循环一百次 while (i<100){ i++; System.out.println(i); } } }
package stracture; public class Demo08While { public static void main(String[] args) { //计算1+2+3+……+100 int i =0; int sum =0; while (i<=100){ sum = sum + i; i++; } System.out.println(sum); } }
4.2 do……while循环
do{
//代码语句
}while(布尔表达式)
- 不满足条件也可以至少执行一次
package stracture; public class Demo09DoWhile { public static void main(String[] args) { int i = 0; int sum = 0; do { sum = sum + i; i++; }while (1<=100); } }
- while 和 do while 的区别
package stracture; public class Demo10Compare { public static void main(String[] args) { int a = 0; while (a<0) { System.out.println(a); a++; } System.out.println("================================"); do { System.out.println(a); a++; }while (a<0); } }
- while先判断后执行,do while先执行后判断
- do while总是保证循环体会被至少执行一次,这是他们的主要差别
4.3 for循环
- for循环语句,支持迭代的一种通用结构,是最有效最灵活的循环结构
- for循环执行的次数,是在执行前就确定的,语法格式
for(初始化值;布尔表达式;更新){
//代码语句
}
package stracture;
public class Demo11For {
public static void main(String[] args) {
int a = 1;//初始化条件
while (a<=100){//条件判断
System.out.println(a);//循环体
a+=2;//迭代,意思是a=a+2
}
System.out.println("while循环结束");
//初始化值、条件判断、迭代
for (int i=1; i<=100; i++){
System.out.println(i);
}
System.out.println("for循环结束");
/*
* 关于for的说明
* 最先执行初始化步骤。但可以初始化一个或多个循环控制变量,也可以是空语句
* 然后检测布尔表达式的值,如果为true,循环体被执行,如果为false,循环终止,开始执行循环体后面的语句
* 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减)
* 再次检测布尔表达式,执行上面的过程*/
}
}
5.break & continue
break在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句
package stracture;
public class Demo12Break {
public static void main(String[] args) {
int i =0;
while (i<100){
i++;
System.out.println(i);
if (i==30){
break;
}
}
}
}
continue语句用在循环主体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
package stracture;
public class Demo13Continue {
public static void main(String[] args) {
int i =0;
while (i<100){
i++;
if (i%10==0){
System.out.println();
continue;
}
System.out.println(i);
}
}
}