Java有一个工具类可以让我们获取用户输入,java.util.Scanner是java5的新特性。我们可以通过Scanner类来获取用户的输入。
基本语法:
Scanner s = new Scanner(System.in); //创建一个Scanner对象
通过 Scanner类的 next()与 nextLine()方法获取输入的字符串,在读取前我们一般需要使用 hasNext()与 hasNextLine()判断是否还有输入的数据。
next()
nextLine()
判断一个条件是否正确,正确的话就去执行,我们需要一个 if语句实现。
if (判断条件) { // 如果条件为true就执行结构体语句 }
package com.hongcheng.struct; import java.util.Scanner; public class If1 { public static void main(String[] args) { //选择结构 //if单选择结构 Scanner scanner = new Scanner(System.in); System.out.println("请输入内容:"); String s = scanner.nextLine(); //equals:判断字符串是否相等 if (s.equals("hello")) { System.out.println(s); } System.out.println("End"); scanner.close(); } }
现在我们公司需要做一款游戏,如果做出来了,我们晚上出去庆功,但如果失败了,那我们就去把别人公司的游戏收购了。hahaha!
这时候我们就需要一个双选择结构 if else,一个单if选择结构已经不能满足我们的需求了。
if (判断条件) { // 如果条件为true } else { // 如果条件为false }
package com.hongcheng.struct; import java.util.Scanner; public class If2 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // if双选择结构 if else // 现在我们公司需要做一款游戏,如果做出来了,我们晚上出去庆功, // 但如果失败了,那我们就去把别人公司的游戏收购了。hahaha! System.out.println("游戏开发是否成功?1表示成功;2表示失败"); int k = scanner.nextInt(); if (k == 1) { System.out.println("成功,晚上出去庆功!"); } else { System.out.println("只能用钱去收购TX了!哈哈哈"); } scanner.close(); } }
有时候我们不只要收购TX一个公司,可能还要收购暴雪的游戏,也许还有阿里巴巴。
if (判断条件1) { // 如果条件1为true } else if (判断条件2) { // 如果条件2为true } else if (判断条件3) { // 如果条件3为true } else { // 如果条件3为false }
package com.hongcheng.struct; import java.util.Scanner; public class If3 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // if多选择结构 if else if else /* if语句最多有1个 else语句,else语句在最后 if语句可以有多个 else if 语句,他们必须在 else语句之前 一旦其中一个 else if语句为真,其他的 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("成绩不合法"); } scanner.close(); } }
可以使用嵌套的if...else 语句,有个 if else语句里面可以再嵌套多个if else。
语法
if (判断条件1) { //如果条件1为true if (判断条件2) { //如果条件2为true } }
多选择结构也可以使用 switch语句实现。
switch case语句判断一个变量和一些值中的某个值是否相等,每个值叫做一个分支。
switch语句的变量类型可以是:byte、short、int、char
从JDK7开始,switch可以用字符串String类型作为变量类型
case标签必须是字符串常量或字面量
语法格式:
switch (expression) { case value: //语句 break; //可选,但最好使用 case value: //语句 break; default: //语句 }
package com.hongcheng.struct; public class Switch1 { public static void main(String[] args) { //case穿透 //switch的本质是匹配一个值 char grade = 'C'; 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; default: System.out.println("非法数据"); } } }
反编译
从.class字节码反编译回.java文件,通过IDEA可以实现这种操作。
通过比较对象的hashCode来匹配标签,hashCode可以认为是唯一的。
package com.hongcheng.struct; public class Switch2 { public static void main(String[] args) { String name = "布鲁斯韦恩"; /* JDK7的新特性,可以用String类型作为 switch变量类型 字符的本质还是数字 */ //反编译 (编译)java--->class(字节码文件)--->java(反编译IDEA) switch (name) { case "迪丽热巴": System.out.println("迪丽热巴"); break; case "古力娜扎": System.out.println("古力娜扎"); break; case "布鲁斯韦恩": System.out.println("布鲁斯韦恩"); break; default: System.out.println("杨超越"); } } }
while循环是最基本的循环,它的结构是:
while (conditon) { //循环语句 }
package com.hongcheng.struct; public class While1 { public static void main(String[] args) { //输出1~100 int i = 0; while (i < 100) { i++; System.out.println(i); } //死循环 while (true) { //等待客户端连接 //...... } } }
计算1+2+3+...+100=?如下:
package com.hongcheng.struct; public class While2 { public static void main(String[] args) { // 计算1+2+3+...+100=? int i = 0; int sum = 0; while (i < 100) { i++; sum += i; } System.out.println(sum); } }
do while语法:
do { //循环语句 } while (判断条件);
package com.hongcheng.struct; public class DoWhile { 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); } }
for循环是一种可以迭代的循环结构,是最有效、最灵活的循环结构。
for循环语法:
for (初始化; 判断条件; 更新) { //循环语句 }
for循环执行流程
package com.hongcheng.struct; public class For1 { public static void main(String[] args) { int i = 1; //初始化条件 while (i <= 100) { //条件判断 System.out.println(i); //循环体 i += 2; //迭代 } System.out.println("while循环结束"); //初始化条件、判断条件、迭代 for (int a = 1; a <= 100; a++) { System.out.println(a); } System.out.println("for循环结束"); } }
forEach语法:
for (变量类型 变量名 : 数组名) { //循环语句 }
package com.hongcheng.struct; public class ForEach { public static void main(String[] args) { int[] numbers = {10, 20, 30, 40, 50}; //静态初始化一个数组 //普通for循环,遍历数组 for (int a = 0; a < numbers.length; a++) { System.out.println(numbers[a]); } System.out.println("=============="); //增强for循环,遍历数组 for (int i : numbers) { System.out.println(i); } } }
break可以用在任何循环和switch中,break的作用是强制退出循环,不再执行循环的剩余语句,转而执行循环后的语句。
continue只能用在循环中,continue的作用是中止本次循环,回到判断条件看是否继续循环。
package com.hongcheng.struct; public class Break { public static void main(String[] args) { int i = 0; while (i < 100) { i++; System.out.println(i); if (i == 40) { break; //退出循环,执行循环后的语句 } } System.out.println("最后的i是:" + i); } }
package com.hongcheng.struct; public class Continue { public static void main(String[] args) { int i = 0; while (i < 100) { i++; if (i % 10 == 0) { System.out.println(); continue; //中止这次循环,回到开头重新判断条件 } System.out.print(i + " "); } } }
goto
goto在Java中不使用,但是有。goto相当于书签的作用,可以跳转到标记的地方。带标签的break和continue跟goto很像。
标签的格式:
mark: