web-dev-qa-db-ja.com

Javaでreadline()メソッドを使用する方法は?

私は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

次の質問をしたいです。

  1. 次の文で何が行われますか?

    DataInputStream in = new DataInputStream(System.in);
    

    inDataInputStreamのオブジェクトである場合、何が新しく、上記のステートメントの右側のステートメントは何をしますか?

  2. 整数値をintnumberに、float値をfloatnumberに入れるために異なる方法が使用されたのはなぜですか?

41

Scannerの代わりにDataInputStreamを使用することをお勧めします。 Scannerは、この目的のために特別に設計され、Javaで紹介されています。5. Scannerの使用方法については、次のリンクを参照してください。

Scanner s = new Scanner(System.in);
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
68
Jomoos

BufferedReaderおよびInputStreamReaderクラスを使用します。

BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
String line=buffer.readLine();

または、Java.util.Scannerクラスメソッドを使用します。

Scanner scan=new Scanner(System.in);
30
adatapost

DataInputStreamは、InputStream(これはSystem.inです)の単なるデコレーターであり、より便利なメソッドを使用して読み取ることができます。

Float.valueOf()については、Floatにも.parseFloat()もあるので、それは興味があります。ここで、コードは.valueOf()Floatを取得し、.floatValue()を使用してfloat型に変換します。これはJava 1.5+では不要です。自動ボックス化解除。

そして、他の答えが正しく言うように、これらの方法はとにかく時代遅れです。

6
fge

要約すると、どのコードをコピーするかについては注意が必要です。適切に選択されたコードではなく、たまたま機能するコードをコピーしている可能性があります。

Intnumberでは、parseIntが使用され、floatnumberではvalueOfが使用されるのはなぜですか?

私が見ることができる正当な理由はありません。ご想像のとおり、APIの一貫性のない使用です。


Javaは大文字と小文字を区別し、Readline()メソッドはありません。おそらくreadLine()を意味します。

DataInputStream.readLine()は推奨されません。BufferedReader.readLine();を使用してください。

ただし、あなたの場合は、Scannerクラスを使用します。

Scanner sc = new Scanner(System.in);
int intNum = sc.nextInt();
float floatNum = sc.nextFloat();

クラスが何をしているのか知りたい場合は、 Javadoc を簡単に確認することをお勧めします。

5
Peter Lawrey

これで説明できると思います...

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){
        }
    }
}
2
Prakhar