我是Java的初学者,我正在阅读通过键盘上的readLine()
方法为变量赋值的主题。书中给出的程序如下:
import java.io.DataInputStream
class Reading
{
public static void main(String args[])
{
DataInputStream in = new DataInputStream(System.in);
int intnumber=0;
float floatnumber=0.0f;
try {
system.out.println("enter an integer: ");
intnumber = Integer.parseInt(in.readline());
system.out.println("enter a float number: ");
floatnumber = Float.valueOf(in.readline()).floatvalue();
}
// Rest of code
我想问以下问题:
在以下声明中做了什么?
DataInputStream in = new DataInputStream(System.in);
如果in
是DataInputStream
的对象,那么新的内容以及上述声明右侧的声明是做什么的?
为什么使用不同的方法将整数值放入intnumber并将float值放入floatnumber?
答案 0 :(得分:29)
使用BufferedReader和InputStreamReader类。
BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
String line=buffer.readLine();
或使用java.util.Scanner
类方法。
Scanner scan=new Scanner(System.in);
答案 1 :(得分:6)
DataInputStream
只是InputStream
上的装饰者(System.in
是),它允许使用更方便的方法进行阅读。
关于Float.valueOf()
,好吧,这很好奇,因为Float
也有.parseFloat()
。这里的代码使用Float
抓取.valueOf()
,使用float
将其转换为原始.floatValue()
类型,由于自动取消装箱,这对于Java 1.5+是不必要的。
正如其他答案所说,这些方法无论如何已经过时了。
答案 2 :(得分:5)
总结:我会小心你复制的代码。您可能正在复制恰好工作的代码,而不是精心选择的代码。
在intnnumber中,使用parseInt,在floatnumber中使用valueOf为什么会这样?
我没有理由看到。正如您所怀疑的那样,这是对API的不一致使用。
Java区分大小写,并且没有任何Readline()
方法。也许你的意思是readLine()。
但是,对于您的情况,我会使用Scanner类。
Scanner sc = new Scanner(System.in);
int intNum = sc.nextInt();
float floatNum = sc.nextFloat();
如果您想知道课程的内容,我建议您快速查看the Javadoc。
答案 3 :(得分:2)
这将解释它,我认为......
import java.io.*;
class reading
{
public static void main(String args[]) throws IOException
{
float number;
System.out.println("Enter a number");
try
{
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(in);
String a = br.readLine();
number = Float.valueOf(a);
int x = (int)number;
System.out.println("Your input=" + number);
System.out.println("Your input in integer terms is = " + x);
}
catch(Exception e){
}
}
}