Scanner:键盘输入功能的实现
-
如何从键盘获取不同类型(基本数据类型、String类型)的变量:使用Scanner
-
键盘输入代码的四个步骤
- 1.导包:
import java.util.Scanner;
- 2.创建Scanner类型的对象:
Scanner scan = new Scanner(System.in);
- 3.调用Scanner类的相关方法(
next() / nextXxx()
),来获取指定类型的变量 - 4.释放资源:
scan.close();
- 1.导包:
-
注意:需要根据相应的方法,来输入指定类型的值。如果输入的数据类型与要求的类型不匹配时,会报异常导致程序终止。
案例:小明注册某交友网站,要求录入个人相关信息。如下:
请输入你的网名、你的年龄、你的体重、你是否单身、你的性别等情况。
Scanner类中提供了获取byte \ short \ int \ long \ float \ double \ boolean \String 类型变量的方法。
注意:没有提供获取char类型变量的方法。需要使用next().charAt(0)
//步骤1:导包 import java.util.Scanner;
import java.util.Scanner;
class ScannerTest{
public static void main(String[] args){
//步骤2:创建Scanner类型的对象:`Scanner scan = new Scanner(System.in);`
Scanner scan = new Scanner(System.in); //变量类型 变量名 = 变量值
//做一个提示
System.out.println("欢迎进入");
System.out.print("请输入你的名字:");
//步骤3:调用Scanner类的相关方法(`next() / nextXxx()`),来获取指定类型的变量
String name = scan.next(); //网名
System.out.print("请输入你的年龄:");
int age = scan.nextInt(); //年龄
System.out.print("请输入你的体重:");
double weight = scan.nextDouble(); //体重
System.out.print("请输入你是否婚配---true/false:");
boolean isMarried = scan.nextBoolean(); //婚配
System.out.print("请输入你的性别---男/女:");
char gender = scan.next().charAt(0); //性别
System.out.println("name = "+name);
System.out.println("age = "+age);
System.out.println("weight = "+weight);
System.out.println("isMarried = "+isMarried);
System.out.println("gender = "+gender);
//步骤4:释放资源:`scan.close();`
scan.close();
}
}
练习1:
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:高:180cm以上;富:财富1千万以上;帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
提示:
System.out.println(“身高: (cm));
scanner.nextInt();
System.out.println(“财富: (千万));
scanner.nextDouble();
System.out.println(“帅否: (true/false));
scanner.nextBoolean();
System.out.println(“帅否: (是/否));
scanner.next(); "是".equals(str)
import java.util.Scanner;
public class ScannerExer1{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("身高:(cm)");
int high = scan.nextInt();
System.out.println("财富:(千万)");
double d1 = scan.nextDouble();
System.out.println("帅:(是/否)");
String s1 = scan.next();
//帅以字符串接收了
if(high > 180 && d1 > 1.0 && s1.equals("是")){
System.out.println("我一定要嫁给他!!!");
}else if(high > 180 || d1 > 1 || s1.equals("是")){
System.out.println("嫁吧,比上不足,比下有余。");
}else{
System.out.println("不嫁");
}
//帅以布尔
/*
System.out.println("帅:(true/false)");
Boolean b1 = scan.nextBoolean();
if(high > 180 && d1 > 1000 && b1){
System.out.println("我一定要嫁给他!!!");
}else if(high > 180 || d1 > 1 || b1){
System.out.println("嫁吧,比上不足,比下有余。");
}else{
System.out.println("不嫁");
}
*/
//关闭资源
scan.close();
}
}
练习2
我家的狗5岁了,5岁的狗相当于人类多大呢?其实,狗的前两年每一年相当于人类的10.5岁,之后每增加一年就增加四岁。那么5岁的狗相当于人类多少年龄呢?应该是:10.5 + 10.5 + 4 + 4 + 4 = 33岁。
编写一个程序,获取用户输入的狗的年龄,通过程序显示其相当于人类的年龄。如果用户输入负数,请显示一个提示信息。
import java.util.Scanner;
public class DogLife{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("请输入狗狗的年龄:");
int dogAge = scan.nextInt();
if(dogAge < 0){
System.out.println("狗狗的年龄不能是负数哦,请重新输入");
System.out.println("请输入狗狗的年龄:");
}else if(dogAge > 0 && dogAge <= 2){
double earAge = dogAge * 10.5;
System.out.println("狗狗的年龄为:"+earAge);
}else{
double age = 10.5 + 10.5 + (dogAge - 2)*4;
System.out.println("狗狗的年龄为:"+age);
}
}
}