流程控制1


第一节,用户交互Scanner

基本语法

Scanner s = new Scanner(System.in);

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLIne()判断是否还有输入的数据

  1. 首先用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
  1. 再试一试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对象的方法

java控制错误页面的展示 java control_java

进阶使用

!这里有问题,二则里输入整数也判定为小数,有没有大佬帮忙优化一下代码。。。
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选择结构

  1. 单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();
} 
}
  1. 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();
} 
}
  1. 嵌套if结构
if(布尔表达式1){
    ///如果布尔表达式1的值为true执行代码
    if(布尔表达式2){
        ///如果布尔表达式2的值为true执行代码
        }
}

下一节:

流程控制2