1、用户交互Scanner
-
java.util.Scanner 是java5 的新特性,我们可以通过 Scanner 类来获取用户的输入
-
基本语法: Scanner s = new Scanner(System.in)
-
通过Scanner类的 next() 和nextLine()方法获取输入的字符串,在读取前我们一般需要 使用 hasNext() 与 hasNextLine() 判断是否还有输入的数据。
//创建一个扫描器对象,用于接收键盘数据 Scanner scanner = new Scanner(System.in); System.out.println("使用next方式接收"); //判断用户有无输入字符串 if (scanner.hasNext()){ //使用Next 方法接收 String str = scanner.next(); System.out.println("next内容为"+ str); //输入hello world 输出hello } Scanner scanner1 = new Scanner(System.in); System.out.println("使用nextLine方式接收"); //判断用户有无输入字符串 if (scanner1.hasNextLine()){ //使用Next 方法接收 String str1 = scanner1.nextLine(); System.out.println("nextLine内容为"+ str1); //输入hello world 输出hello } //凡是属于IO流的类如果不关闭就会一直占用资源,用完就关闭 scanner.close();
-
next()
- 1、一定要读取到有效字符后才可以结束输入
- 2、对输入有效字符之前遇到的空白,next()方法会自动将其去掉
- 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
- 4、next() 不能得到带有空格的字符串
-
nextLine()
- 1、以Enter 为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
- 2、可以获得空白。
public static void main(String[] args) { //输入多个数字,求和 与 平均数,每输入一个数字回车确认,通过非数字的输入来结束输入并输出结果 Scanner scanner = new Scanner(System.in); double sum = 0.0; int m = 0; System.out.println("请输入数字: "); while (scanner.hasNextDouble()) { double x = scanner.nextDouble(); sum += x; m++; // m++ System.out.println("现在输入的是第" + m + "个数据,和为" + sum + "~"); } System.out.println(m + "个数的和为: " + sum + " 平均数为: " + (sum / m)); scanner.close(); }
2、顺序结构
- JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
- 顺序结构是最简单的算法结构
- 语句和语句之间,框架之间是从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的。
3、选择结构
if 选择结构
- if 单选择结构
- if
- if 双选择结构
- if else
- if 多选择结构
- if else if if else if
- 嵌套的 if 语句
Switch多选择结构
Switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支
//case 穿透 匹配一个具体的值
char grade = 'A';
switch (grade){
case 'A':
System.out.println("优秀");
break; //可选 记得加上跳出
case 'B':
System.out.println("良好");
break;
default:
System.out.println("Unknow");
- 从JAVA 7 开始的新特性,表达式结果可以是字符串
- 字符是本质还是数字
- 反编译 Java ----- Class (字节码文件) ----反编译(IDEA)
- 查看反编译的class 文件 移动到idea查看
4、循环结构
-
While 循环
-
while(布尔表达式){ //循环内容 }
-
循环条件一直true 就会造成无限循环,我们正常业务中应该是要避免死循环
-
do … while 循环
-
do … while 循环至少会执行一次
-
do { // 代码语句 }while(布尔表达式);
-
-
for 循环
for(初始化;布尔表达式;更新){ //代码语句 } 100.for 快速写出
// 0 到 100 之间 奇数和偶数的和
int qisum = 0;
int ousum = 0;
for (int i = 0; i <= 100; i++) {
if (i%2!=0){ //判断奇数
ousum += i;
}else { //偶数
qisum +=i;
}
}
System.out.println("偶数的和为: " + ousum);
System.out.println("奇数的和为: " + qisum);
// 输出1~1000之间5的倍数,每行三个输出
for (int i = 1; i <= 1000; i++) {
if (i%5==0){
System.out.print(i + "\t");
}
if (i%(5*3)==0){ //换行 控制
System.out.println();
}
}
//println 输出后换行
//print 输出后不换行
//1.打印第一列
//2.固定的 1 再次循环抱起来
//3.去掉重复的 j<=i
//4.调整样式
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println();
}
-
JAVA5 引入的一种用于数组的增强型for 循环
for(声明语句 : 表达式){ //代码句子 }
int [] numbers = {10,11,12,13}; //定义了一个数组 for (int x : numbers){ System.out.println(x); }
5、break & continue
- break 用于强行退出整个循环,不执行循环中的剩余的语句
- continue 语句在循环语句体中,用于终止某次循环过程,跳过循环中尚未执行的语句,进行下一次是否执行循环的判定
6、练习
//打印正三角形 分步思想 问题一步一步的分开解决
for (int i = 1; i <= 5; i++) {
for (int j = 5; j >= i ; j--) {
System.out.print(" ");
}
for (int j = 1; j <= i ; j++) {
System.out.print("*");
}
for (int j = 1; j < i ; j++) {
System.out.print("*");
}
System.out.println();
}