一、Scanner对象
通过Scanner类来获取用户的输入(格式):
Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般使用hasNext()与hasNextLine()判断是否还有输入的数据
首先是next():
package com.liyan;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用next方式接收");
//判断用户有没有输入字符串
if(scanner.hasNext()){
String str = scanner.next();
System.out.println("输入的内容为:" + str);
}
//凡是IO流的类如果不关闭会一直占用资源,要及时用完把它关掉
scanner.close();
}
}
//输入:hello world
//输出结果为hello
其次是nextLine():
package com.liyan;
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
//创建一个扫描器对象,用于接收键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("使用nextLine方式接收:");
//判断是否还有输入
if(scanner.hasNextLine()){
String str = scanner.nextLine();
System.out.println("输出的内容为:" + str);
}
//凡是IO流的类如果不关闭会一直占用资源,要及时用完把它关掉
scanner.close();
}
}
//输入:hello world
//输出结果为hello world
总结:
- next():对输入有效字符之前遇到空白则去掉空白,只有有效字符才将其后面的空白作为分隔符或者结束符且不能得到带有空格符的字符串
- nextLine():以Enter作为结束符,nextLine()方法返回的是输入回车之前的所有字符串也可以获得空白
来个案例:
package com.liyan;
import java.util.Scanner;
public class Demo04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//从键盘获取数据
int i = 0;
float f = 0.0f;
System.out.println("请输入整数:");
if(scanner.hasNextInt()){//hasNextLine():判断输入的是否含有整数
int i1 = scanner.nextInt();//使用nextInt()来接收输入的数据
System.out.println("整数数据:" + i);
}else{
System.out.println("输入的不是整数数据!");
}
System.out.println("请输入小数:");
if (scanner.hasNextFloat()){//hasNextFloat():判断输入的是否含有小数
float i2 = scanner.nextFloat();//使用nextFloat()来接收输入的数据
System.out.println("小数数据:" + i2);
}else{
System.out.println("输入的不是小数数据!");
}
scanner.close();
}
}
再来一个案例:输入多个数字求总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行结果:
package com.liyan;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//输入多个数字求总和和平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行结果
Scanner scanner = new Scanner(System.in);
//求和
double sum = 0;
//计算输入了多少数字
int m = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和和统计
while(scanner.hasNextDouble()){
double str1 = scanner.nextDouble();
//nextDouble():接收用户输入的数字并赋给str1
m +=1;//每输入一个数就使m自增1
sum +=str1;
}
System.out.println("和是:" + sum);
System.out.println("平均值是:" + (sum/m));
//关闭scanner
scanner.close();
}
}
再来写一个案例
知识点:s.equals()函数:作用是比较字符串是否相等
package com.liyan;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入内容:");
String s = scanner.nextLine();
if (s.equals("Hello")){//s.equals():作用是比较字符串是否相等
System.out.println(s);//如果输入的字符串是Hello,那么输出Hello
}else{
System.out.println("end1");
}
scanner.close();
}
}
if{}else{}语句结构:
package com.liyan;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
//考试分数的判定,大于60及格,小于60不及格
Scanner scanner = new Scanner(System.in);
System.out.println("请输入成绩:");
float score = scanner.nextFloat();
if(score >= 60){
System.out.println("及格");
}else {
System.out.println("不及格");
}
scanner.close();
}
}
switch语句:
package com.liyan;
public class Demo06 {
public static void main(String[] args) {
char grade = 'A';//输出结果为:优秀
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("未知等级");
}
}
}
while循环结构:
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
//输出1+2+..+100
int i = 0;
int sum = 0;
while(i<=100){
sum +=i;
i++;
}
System.out.println(sum);//输出结果为5050
}
}
do…while循环结构:
package com.liyan;
public class Demo07 {
public static void main(String[] args) {
//输出1+2+..+100
int a = 0;
while (a < 0){
a++;
System.out.println(a);
}
System.out.println("==============");
do{
System.out.println(a);
}while(a<0);
}
}
//输出结果为:
// ===========
// 0
总结:while和do…while循环的区别是:while先判断后执行,do…while先执行一次后判断