0

再びJavaの理解に問題があります。JavaとPythonのHelloworldについて前の質問をしたとき、私はそれがハングアップしなくなるまで、しばらくの間、その言語を許可されたものとして使用するという提案を受けました。しかし、私はそのアプローチを取ることができず、JavaとPythonの奇妙なことに困惑しています。

これは、ユーザーから入力を受け取り、Pythonで華氏を摂氏に変換するプログラムです。

def main ():
 fahr = input (" Enter the temperature in F: ")
 cel = ( fahr - 32) * 5.0/9.0
 print " the temperature in C is : " , cel

これは、内部で奇妙なことが起こっていないので、かなり簡単です。

Javaで同じことを行う例:

import java . util . Scanner ;

 public class TempConv {
 public static void main ( String [] args ) {
 Double fahr ;
 Double cel ;
 Scanner in ;

 in = new Scanner ( System . in );
 System . out . println (" Enter the temperature in F: " );
 fahr = in . nextDouble ();

 cel = ( fahr - 32) * 5.0/9.0;
 System . out . println (" The temperature in C is : " + cel );

 System . exit (0);
 }

 }

私が起こるべきだと思ったのは、スキャナーはJavaクラス/ユーザー入力を受け取るクラス/オブジェクトのインスタンスであり、

Scanner in

ユーザー入力を受け取るための新しいオブジェクトを作成しました。Javaでスキャナータイプであると宣言しているだけであることがわかりました(間違っている場合は訂正してください)。

これで、Pythonの場合、ユーザーからの入力を受け取る、新しく作成されたScannerオブジェクトのメソッドを呼び出すだけでした。OMG、これはJavaで何ですか?作成します

新しいスキャナー

オブジェクトを作成System.inし、パラメータとして渡して、に割り当てます

また?

誰かがPythonの用語で私に説明してもらえますか?ここで何が起こっているのか、そしてそれがどのようにそしてなぜPythonとそれほど違うのか?

創造的な提案は大歓迎です。

4

4 に答える 4

2

あなたの質問は少し文字化けしていますが、これが私の答えの試みです。Java では、Python と同様に、メソッドを呼び出す前にクラスをインスタンス化する必要があります。Python では、次のようにします。

myvar = MyClass(name="example")

Java では、構文は非常に似ています。

in = new Scanner(System.in);

Python と同じように、次のようなメソッドを呼び出すことができます。

fahr = in.nextDouble();

これは、同等の Python コードがどのように見えるかとほぼ同じです。私があなたの混乱の原因を理解していない可能性があります.

于 2012-04-19T13:47:16.297 に答える
1

Java は静的型付き言語であるため、使用する前に変数の型を宣言する必要があります。

Scanner input; //This declare a variable of type Scanner but not assign anything to it yet
input = new Scanner(System.in); // This create a new object of Scanner type and assign it to the variable in

これは次のように短縮できます。

Scanner input = new Scanner(System.in);

Python に Scanner クラスがあると仮定すると、ほぼ同等のコードは次のようになります。

input_obj = None
input_obj = Scanner()

Python は動的型付け言語であるため、型を宣言する必要はありません。したがって、最初の行は何の役にも立たず、省略可能であり、省略すべきです。

input_obj = Scanner()
于 2012-04-19T14:02:01.587 に答える
1

オブジェクト宣言は、None の暗黙的な代入と考えてください。変数には型がありませんが、その VALUES には型があるため、Python ではこれはかなり無意味です (値を割り当てずに変数を宣言するのは無意味です)。Java では、変数を宣言するときに、どの型のサブセットがそこに格納されるかを約束します。その約束をすることと、実際にそこに値を入れることとの間に何らかのコードが存在する可能性があるため、それらは別々に達成されます。ステートメント。

于 2012-04-19T13:49:01.967 に答える
-4

プログラムやコンピューターの仕組みを本当に理解していないと思います。型オブジェクトの正しいサイズのScanner in名前が付けられたメモリ内の領域のラベルを作成し、実際には、以前に予約されたメモリ内のその場所にそのオブジェクトを作成すると考えることができます。これは大まかに Python の場合と似ていると考えることができますが、それは正確ではありません。問題は、Python は型付けが緩いため、バックグラウンドですべての簿記を処理し、1 行のコードで実際には複数のステップを実行できるようにすることです。inScannerin = new Scanner()in = None in = Scanner()

于 2012-04-19T13:48:03.093 に答える