Java输入:扫描程序或IOException
我在学校上Java课,老师说我应该使用Java输入:扫描程序或IOException,java,input,java.util.scanner,ioexception,Java,Input,Java.util.scanner,Ioexception,我在学校上Java课,老师说我应该使用Scanner类的实例从控制台读取输入 例如: import java.util.Scanner; Public class ExampleName { public static void main(String[] args) { Scanner input = new Scanner(System.in); char letter; letter = input.nex
Scanner
类的实例从控制台读取输入
例如:
import java.util.Scanner;
Public class ExampleName {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
char letter;
letter = input.next().charAt(0);
}
}
import java.io.IOException;
Public class ExampleChar {
public static void main(String[] args) throws IOException {
char letter;
letter = (char) System.in.read();
}
}
然而,整个夏天我都在读这本书,书中说使用System.in.read()
来读取输入
例如:
import java.util.Scanner;
Public class ExampleName {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
char letter;
letter = input.next().charAt(0);
}
}
import java.io.IOException;
Public class ExampleChar {
public static void main(String[] args) throws IOException {
char letter;
letter = (char) System.in.read();
}
}
哪种形式正确?获取基本输入(char、int、double等)应该使用哪种形式?
Scanner
和System.in.read()
是从Java代码读取输入的不同方法,但结果是相同的,这取决于程序员选择应该使用什么。都是从控制台获取输入的有效方法
使用可以使事情变得更简单,因为它提供了更多可用于检索输入的方法,如nextFloat
和nextInt
,以及可用于验证输入的方法,如hasNextDouble
(System.in
)的功能更加有限,只提供了一些read
方法,这意味着它可能需要额外的手动工作
要从控制台读取标准输入(如double、int等),我将使用
新扫描仪(System.in)
方法。使用对您最有意义的方法。在您的示例中,您是否注意到在初始化扫描仪时,您将其传递给系统。
System.in
返回InputStream
的实例(从JDK1.0开始)
“标准”输入流。此流已经打开,可以提供输入数据。通常,此流对应于键盘输入或主机环境或用户指定的其他输入源
扫描器
(自JDK1.5起)使用系统中的输入流
,并使用正则表达式解析输入流
,从而更容易访问系统中包含的数据
Scanner(System.in)构造一个新的扫描器,该扫描器生成从指定输入流扫描的值。流中的字节使用底层平台的默认字符集转换为字符
我建议使用Scanner
,它通过提供以下方法使代码更干净,更易于维护:
next()
-返回nextString
nextInt()
-返回nextint
nextDouble()
-返回下一个double
next(Pattern Pattern)
-返回下一个匹配的字符串Pattern
除了前面的答案之外,我想说的是,您可以使用以下方法-
nextInt()
-用于读取integer
nextDouble()
-用于读取double
nextByte()
-用于读取byte
nextLong()
在这里,您添加的next()
方法用于整体读取任何标记
有关更多详细信息,请参见扫描仪的
两者都是不同的方式。就我所知,第一种是最常用的。我同意@Christian-这也是我见过的最常见的方式。另一个优点是,您现在可以使用一个对象执行其他功能。我不知道InputStream与扫描仪和System.in的关系如何,谢谢!