Java中输入内容的三种方法
- 输入单个字符(只含有一个字符)
- BufferedReader类和InputStreamReader
- 最简单,输入范围最广泛的一种----Scanner类
一.从控制台接收一个字符,然后将其打印出来
import java.io.*;
public static void main(String [] args) throws IOException{
System.out.print("Enter a Char:");
char i = (char) System.in.read();
System.out.println("your char is :"+i);
}
虽然此方式实现了从键盘获取输入的字符,但是System.out.read()只能针对一个字符的获取,同时,获取进来的变量的类型只能是char,当我们输入一个数字,希望得到的也是一个整型变量的时候,我们还得修改其中的变量类型,这样就显得比较麻烦。
二.从控制台接收一个字符串,然后将其打印出来。
在这个题目中,需要用到== BufferedReader类和InputStreamReader ==类
import java.io.*;
public static void main(String [] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = null;
System.out.println("Enter your value:");
str = br.readLine();
System.out.println("your value is :"+str);
}
这样我们就能获取我们输入的字符串。
三. Scanner类
其实之前两种我觉得不是很好用,这个最简单最普遍。
import java.util.Scanner;
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
}
这段代码已经表明,Scanner类不管是对于字符串还是整型数据或者float类型的变量,只需做一点小小的改变,就能够实现功能,无疑是最强大的!!!!!!
Scanner中的 .nextLine()和.next()
Java中Scanner类中的方法next()和nextLine()都是吸取输入台输入的字符,但是它们是有区别的。
区别:
next() 不会吸取字符前/后的空格/Tab键,只吸取字符,开始吸取字符(字符前后不算)直到遇到空格/Tab键/回车截止吸取;
nextLine() 吸取字符前后的空格/Tab键,回车键截止。
如果将之前那段代码中的输入姓名和年龄的那两句调换一下顺序,就会出现问题。。。。。
改成:
class D{
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
System.out.println("请输入你的姓名:");
String name = sc.next();
System.out.println("请输入你的工资:");
float salary = sc.nextFloat();
System.out.println("你的信息如下:");
System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary);
}
}
运行一下就成这个样子了:
输入年龄之后直接跳过姓名了。。。。。
原因:在执行nextInit()函数之后,敲击了enter回车键,回车符会被 nextLine()函数吸收,实际上是执行了nextLine()函数吸收了输入的回车符(并不是没有执行nextLine函数),和nextLine()功能一样的函数next(),他们的区别就在于:next()函数不会接收回车符和tab,或者空格键等,所以在使用 nextLine()函数的时候,要注意敲击的回车符有个被其吸收,导致程序出现霸隔……