流程控制1
第一节,用户交互Scanner
基本语法
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLIne()判断是否还有输入的数据
- 首先用Next() (不能读取空格)
package first;
import java.util.Scanner;
public class New {
public static void main(String[] arg) {
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收:");
//判断用户有没有输入字符串
if(scanner.hasNext()) {
//使用next方式接收
String str = scanner.next(); //程序会等待用户输入完毕
System.out.println("输出的内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源
scanner.close();
}
}
//输入 hello word
//输出 hello
- 再试一试nextLine() (可以读取空格)
package first;
import java.util.Scanner;
public class New {
public static void main(String[] arg) {
//创建一个扫描对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判断用户有没有输入字符串
if(scanner.hasNextLine()) {
//使用nextLine方式接收
String str = scanner.nextLine(); //程序会等待用户输入完毕
System.out.println("输出的内容为:"+str);
}
//凡是属于IO流的类如果不关闭会一直占用资源
scanner.close();
}
}
//输入 hello word
//输出 hello word
假如去掉if判断(似乎没有什么影响,if是不是有些多余?这里不是很理解)
package first;
import java.util.Scanner;
public class New {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
String str = scanner.nextLine();
System.out.println("输出的内容为:"+str);
scanner.close();
}
}
Scanner对象的方法
进阶使用
!这里有问题,二则里输入整数也判定为小数,有没有大佬帮忙优化一下代码。。。
package first;
import java.util.Scanner;
public class New {
public static void main(String[] arg) {
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 first;
import java.util.Scanner;
public class New {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
double sum = 0;
int m = 0;
System.out.println("请输入数值,若希望停止请输入非数值");
while(scanner.hasNextDouble()) {
double x = scanner.nextDouble();
m = m + 1;
sum = sum + x;
System.out.println("你输入了第"+m+"个数据,然后当前的结果sum="+sum);
}
System.out.println("输入的为非数值,录入退出并计算答案");
System.out.println(m + "个数的和为" + sum);
System.out.println(m + "个数的平均值为" + (sum / m));
scanner.close();
}
}
第二节,if
If选择结构
- 单if结构,判断输入的字符串是否与给定的相等
package first;
import java.util.Scanner;
public class New {
public static void main(String[] arg) {
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();
}
}
- if else结构
if语句至多有1个else语句,else语句在所有的else if语句之后。
if语句可有有若干个else if语句,他们必须在else语句之前。
一旦其中一个else if语句检测为true,其他的else if以及else语句都将跳过执行
比如成绩查询系统
package first;
import java.util.Scanner;
public class New {
public static void main(String[] arg) {
Scanner scanner = new Scanner(System.in);
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结构
if(布尔表达式1){
///如果布尔表达式1的值为true执行代码
if(布尔表达式2){
///如果布尔表达式2的值为true执行代码
}
}