2020.1.15
1.用户交互Scanner
-
即实现程序与人的交互,通过Scanner类来获取用户的输入
基本语法: Scanner s = new Scanner(System,in);
-
通过Scanner类的**next()方法与nextLine()**方法获取输入的字符串
-
通过Scanner类的**hasNext()方法与hasNextLine()**方法判断是否还有输入的字符串
-1 **next()**方法以有效字符后出现的第一个空格为结束符,故其不能得到带有空格的字符串
-2 **nextLine()**方法以enter为结束符,其返回的是输入回车符之前的所有字符,故可以获得空白
public class Demo01 { public static void main(String[] args) { // 创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("用next的方式接收:"); // 判断用户有没有输入字符串 if (scanner.hasNext()){ // 用next的方式接收 /* String str = scanner.next(); //hello world System.out.println("str输入的内容为:"+str); //hello */ String str1 = scanner.nextLine(); //hello world System.out.println("str1输入的内容为:"+str1); //hello world } // 凡是属于IO流的类如果不关闭会一直占用资源,要养成好习惯用完就关掉 scanner.close(); } }
-
scanner的实例
public class Demo02 { 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(); } }
public class Demo03 { public static void main(String[] args) { // 输入多个数字,求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果 Scanner scanner = new Scanner(System.in); // 和 int sum = 0; // 计算输入了多少个数字 int n = 0; while (scanner.hasNextDouble()){ double x = scanner.nextDouble(); n++; sum += x; } System.out.println(n + "个数的和为:" + sum); System.out.println(n + "个数的平均值为:" + (sum / n)); } }
2.顺序结构
3.选择结构
-
if单选择结构
-
if双选择结构
-
if多选择结构
public class Demo01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入成绩:"); int score = scanner.nextInt(); if (score == 100){ System.out.println("A+"); }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 { System.out.println("成绩不合法"); } scanner.close(); } }
-
嵌套的if结构
-
switch多选择结构(switch case语句)
知识扩充:反编译
-
找到out文件夹里你想看到的反编译代码(为.class文件)
-
将.class文件拷贝到IDEA中,不能直接ctrl+v, 会显示:
应该是打开show in explorer,从文件夹层面复制过去
反编译的代码如下:
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.sp.struct; public class Demo03 { public Demo03() { } public static void main(String[] args) { char rank = 66; switch(rank) { case 65: System.out.println("优秀"); break; case 66: System.out.println("良好"); break; case 67: System.out.println("及格"); break; case 68: System.out.println("不及格"); break; default: System.out.println("未知"); } } }
-
4.循环结构
-
while
-
do-while
-
for
高效写法:100.for 自动生成一个for循环语句
public class Demo04 {
// 打印九九乘法表
public static void main(String[] args) {
int i, j;
for (i = 1; i <= 9; i++){
for (j = 1; j <= i; j++){
System.out.print(i + "*" + j + "=" + i*j + "\t");
}
System.out.println();
}
}
}
-
增强型for循环
常用于循环数组和集合
for(声明语句 : 表达式) { //代码句子 }
public class Demo05 { public static void main(String[] args) { int[] numbers = {10,20,30,40,50};//定义一个数组 // 遍历数组里的元素 for (int x : numbers){ System.out.print(x + "\t"); // 10 20 30 40 50 } } }
5.break & continue & goto
- break:强制跳出整个循环
- continue:跳出本次循环,执行下一次循环
- goto:java没有goto,但可以在bresk和continue中看到goto的影子
6.练习
public class TestDemo {
public static void main(String[] args) {
//打印五行三角形
int i, j, k;
int size;
for (i = 1; i <= 5; i++){
size = 2*i - 1;
for (k = 5-i; k >= 0; k--) {
System.out.print(" ");
}
for (j = 1; j <= size; j++){
System.out.print("*");
}
System.out.println();
}
}
}
public class TestDemo02 {
public static void main(String[] args) {
int i, j;
for (i = 1; i <= 5; i++){
for (j = 5; j >= i; j--){
System.out.print(" ");
}
for (j = 1; j <= i; j++){
System.out.print("*");
}
for (j = 1; j < i; j++){
System.out.print("*");
}
System.out.println();
}
}