用户交互Scanner
Scanner对象
- java.util.Scanner Java1.5的新特性
- 通过人与机器交互,使用Scanner对象接收用户输入
- 使用sc.hasNextXXX() 判断用户还有没有输入对应类型的数据
- 使用sc.nextXXX() 获取对应类型数据
- hashXXX都是用于判断输入了什么类型数据,nextXXX都是为了接收对应类型数据
next() 以空格作为结束符 nextLine() 以回车作为结束符
package cn.allms.base.processcontrol; import java.util.Scanner; /** * 人机交互 */ public class Scanner04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num; float floatNum; System.out.println("接收整数"); if (scanner.hasNextInt()) { num = scanner.nextInt(); System.out.println("整数" + num); } else { System.out.println("哈哈,你输入的不是整数"); } System.out.println("接收小数"); try{ // 重新拿到数据 否则 上面为false后 下面不会再接收输入 scanner = new Scanner(System.in); if (scanner.hasNextFloat()) { floatNum = scanner.nextFloat(); System.out.println("小数" + floatNum); } else { System.out.println("哈哈,你输入的不是小数"); } }catch (Exception e){ e.printStackTrace(); } // 关闭IO scanner.close(); } }
package cn.allms.base.processcontrol;
import java.util.Scanner;
/**
* 人机交互-求和-平均数
*/
public class Scanner05 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 和
double sum = 0;
// 输入的总格式
int m = 0;
System.out.println("请输入数据");
while (scanner.hasNextDouble()) {
double v = scanner.nextDouble();
//个数
m++;
// 求和
sum += v;
}
System.out.println(m + "个数据的和为:" + sum);
System.out.println(m + "个数据的平均数为:" + (sum / m));
// 关闭IO
scanner.close();
}
}
顺序结构
特点:从上而下,一句一句执行,依次执行,是最简单的
/**
* 顺序结构:按照顺序打印1到5
*/
public class Sequence {
public static void main(String[] args) {
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
}
}
选择结构
特点:按照开发者的意图去选择要执行哪块代码
if
package cn.allms.base.processcontrol; import java.util.Scanner; /** * 选择结构01-输入合理的分数 * if */ public class Choose01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入分数"); if (scanner.hasNextDouble()) { System.out.println("你输入的分数是:" + scanner.nextDouble()); } System.out.println("END!"); } }
if ... else ..
package cn.allms.base.processcontrol; import java.util.Scanner; /** * 选择结构01-输入合理的分数02 * if */ public class Choose01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入分数"); if (scanner.hasNextDouble()) { System.out.println("你输入的分数是:" + scanner.nextDouble()); } else { System.out.println("你输入的值不合法"); } } }
if ...else if...
package cn.allms.base.processcontrol; import java.util.Scanner; /** * 选择结构01-判断优良中差 * 超凡 100 * 优秀 90-100 * 良好 80-90 * 中等 60-80 * 差等 10-60 * 特差 0-10 */ public class Choose02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入有效分数"); if (scanner.hasNextFloat()) { float score = scanner.nextFloat(); if (score == 100) { System.out.println("超凡"); } else if (score < 100 && score >= 90) { System.out.println("优秀"); } else if (score < 90 && score >= 80) { System.out.println("良好"); } else if (score < 80 && score >= 60) { System.out.println("及格"); } else if (score < 60 && score >= 10) { System.out.println("差等"); } else if (score < 10 && score >= 0) { System.out.println("特差"); } // 这里没有else 若不满足情况 则不处理,在开发中建议使用上else,容易定位问题 } else { System.out.println("你输入的值不合法"); } // 关闭IO scanner.close(); } }
if ... else if ... else ...
package cn.allms.base.processcontrol; import java.util.Scanner; /** * 选择结构01-判断优良中差 * 超凡 100 * 优秀 90-100 * 良好 80-90 * 中等 60-80 * 差等 10-60 * 特差 0-10 */ public class Choose02 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入有效分数"); if (scanner.hasNextFloat()) { float score = scanner.nextFloat(); if (score == 100) { System.out.println("超凡"); } else if (score < 100 && score >= 90) { System.out.println("优秀"); } else if (score < 90 && score >= 80) { System.out.println("良好"); } else if (score < 80 && score >= 60) { System.out.println("及格"); } else if (score < 60 && score >= 10) { System.out.println("差等"); } else if (score < 10 && score >= 0) { System.out.println("特差"); } else { System.out.println("分数异常,你的分数为" + score); } } else { System.out.println("你输入的值不合法"); } // 关闭IO scanner.close(); } }
switch(..)case ..: .. break;default:..
package cn.allms.base.processcontrol; import java.util.Arrays; /** * 条件控制 switch */ public class Switch01 { public static void main(String[] args) { int[] array = new int[]{1,2,4}; for (int i = 0; i < array.length; i++) { switch (array[i]){ case 1: System.out.println("A"); break; case 4: System.out.println("B"); break; case 2: System.out.println("C"); break; default: System.out.println("你弄啥嘞!"); } } System.out.println("============================="); String name = "亚哥"; // jdk7 新特性 switch支持字符串 switch (name){ case "亚哥": System.out.println("亚哥"); break; case "小之": System.out.println("小之"); break; default: System.out.println("你弄啥嘞!"); } System.out.println("===========1.7底层调用了对象的HashCode()============="); int var = -1; switch (name.hashCode()){ case 941788: var = 1; break; case 123456: var = 0; break; default: var = 2; } switch (var){ case 0: System.out.println("亚哥"); break; case 1: System.out.println("小之"); break; default: System.out.println("你弄啥嘞!"); } } }
循环结构
特点:按照条件执行对应的代码块,直到条件不成立
- while 与 do while
- do while 与while本质区别就是do while 只是会执行一遍
while 本质上就是一个for循环,可以使用idea查看反编译文件
package cn.allms.base.processcontrol; /** * 循环结构 */ public class WhileDemo { public static void main(String[] args) { int loveCode = 0; while (loveCode != 520) { System.out.println("我爱你" + loveCode); ++loveCode; } System.out.println("==========================="); int dislike = 0; do { System.out.println("我恨你" + dislike); dislike++; } while (dislike != 520); System.out.println("==========================="); System.out.println("爱你" + loveCode); System.out.println("恨你" + dislike); } }
for 与 增强的for
package cn.allms.base.processcontrol; /** * 循环结构 for */ public class ForDemo { public static void main(String[] args) { int odd=0,even=0; /*计算1~100间的奇数和和偶数和*/ for (int i = 0; i <= 100; i++) { if (i%2 == 0){ // 偶数和 even+=i; }else{ // 奇数和 odd+=i; } } System.out.println("奇数和"+odd); System.out.println("偶数和"+even); for (int i = 0; i <= 1000; i++) { if (i%5 == 0){ // 一行输出 System.out.print(i+"\t"); } if (i%15 == 0){ System.out.print("\n"); } } System.out.println(); /*=======================*/ int[] arr = new int[]{1,2,3}; // 增强for循环 for (int a: arr) { switch (a){ case 3: System.out.println("玩大了"); break; default: System.out.println(a); } } } }
break & continue
- break 用在switch 和循环中 用于终止循环
continue用于终止某次循环,会继续执行下一次循环
package cn.allms.base.processcontrol; /** * 跳出循环 */ public class ContinueAndBreak { public static void main(String[] args) { int sum =0; for (int i = 0; i <= 10; i++) { if(i%2 == 0){ // 0 2 4 6 8 10 continue; } if (i == 9){ break; } // 1 3 5 7 sum+=i; // 16 } System.out.println(sum); } }
进阶
/**
* java tags demo
* 求素数 100~1000
*/
public class OuterTagsDemo {
public static void main(String[] args) {
outer:
for (int i = 100; i <= 1000; i++) {
for (int j = 2; j < i / 2; j++) {
if (i % j == 0) {
continue outer;
}
}
System.out.print(i+"\t");
}
}
}