Java与python中的用户输入

时间:2012-04-19 13:41:10

标签: java python

理解Java的问题。当我问过前一个关于Hello world in Java versus python的问题时,我收到的建议是暂时取用该语言,直到我不知道为止。但是,我不能采用这种方法,并且对Java和python中的一些奇怪的东西感到困惑。

这是一个程序,它从用户获取输入并在python中将F转换为摄氏度。

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);
 }

 }

我认为应该发生的事情是:Scanner是用于输入用户输入的类/对象的Java类/实例

Scanner in

创建了一个新对象来获取用户输入。事实证明,我们只是声称是Java中的Scanner类型(如果我错了,请纠正我)。

现在,如果它是python,我们就会调用新创建的Scanner对象的方法,该方法从用户那里获取输入。天哪,这在Java中是什么?我们创造

  

新扫描仪

对象并将System.in作为参数传递并将其分配给

  

再次?

有人可以用pythonic的术语向我解释一下,这里发生了什么以及它与python有多大的不同之处?

我们非常感谢任何有创意的建议。

4 个答案:

答案 0 :(得分:2)

你的问题有点乱,但这是我尝试回答的问题。在Java中,就像在Python中一样,您需要先实例化一个类,然后才能在其上调用方法。在Python中,您可以这样做:

myvar = MyClass(name="example")

在Java中,语法非常相似:

in = new Scanner(System.in);

就像在Python中一样,我们现在可以在其上调用方法,例如:

fahr = in.nextDouble();

这与等效的Python代码看起来几乎完全相同。我可能不理解你的困惑的来源,所以如果这没有帮助让我知道,我很乐意更新。

答案 1 :(得分:1)

将对象声明视为None的隐式赋值。这在python中是没有意义的,因为变量没有类型,但是它们的VALUES会这样做(这就是为什么声明一个变量而不赋值给它是没有意义的)。在Java中,当你声明一个变量时,你会对哪个类型的子集将存储在其中做出承诺,并且因为在做出这个承诺和实际有一个值放在那里之间可能有一些代码,它们是在单独完成的语句。

答案 2 :(得分: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()

答案 3 :(得分:-4)

我认为您并不了解程序和计算机的工作原理。您可以将其视为Scanner inin类型对象的正确大小的内存中名为Scanner的区域创建标签,然后in = new Scanner()实际创建该对象内存中以前保留的位置。您可以将其视为与Python中的in = None in = Scanner()大致类似,但这并不十分正确。问题在于,由于Python是松散类型的,它可以处理幕后的所有簿记,从而允许您通过一行代码完成多个步骤。