Python程序转换为Java

时间:2010-01-21 21:12:33

标签: java python

所以我开始参加我的第二个计算机科学课程了!对于我的第一堂课,我们使用了python,对于这门课,我们使用的是Java。我们的第一个任务(几乎只是练习)是将这个craps程序从Python转换为Java,我只是有一段时间。

有人可以帮助我做了什么,你给我一些建议吗?对初学者来说也许是个好网站....有点认识Python的人(仅从第一个CS课程的角度来看)。

1)在python中

def winCraps():
roll = rollDice()
if roll == 7 or roll == 11:
    return True
elif roll == 2 or roll == 3 or roll == 12:
    return False
else:
    return rollForPoint(roll)

这是我尝试将其转换为java

public int winCraps{
    roll = rollDice();
    if (roll = 7 && 11){
    return (true);
    }
    else (roll =2 && 3 && 12){
    return(false);
    }
    else{
    return rollforPoint(roll);
}
}

2)Python

def rollDice():
raw_input("Press <Enter> to roll...")
die1 = randrange(1,7)
die2 = randrange(1,7)
sum = die1 + die2
print "You rolled", die1, "+", die2, "=", sum
return sum

这个混淆了我的地狱。在Java中randrange会是什么?

Java

static int rollDice(){
System.out.print("Press <Enter> to roll...");
double die1 = Math.random();
double die2 = Math.random();
die1 = (int) die1*6+1;
 die2 = (int) die2*6+1;
 int sum = (int)die1 + (int)die2;
 System.out.println("You rolled  "+die1+ " + "+die2+ " = "+sum+".");
 return sum;
 }

*请记住,我只是在学习这些东西lol

8 个答案:

答案 0 :(得分:2)

您需要修复if语句,“==”运算符检查是否相等,并且必须将要检查的变量放在语句的每个部分中。

public int winCraps{
    roll = rollDice();
    if (roll == 7 || roll == 11) {
        return true;
    }
    else if(roll == 2 || roll == 3 || roll == 12) {
        return false;
    }
    else{
        return rollforPoint(roll);
    }
}

在rollDice()方法中,为每个骰子分配值的方式不正确。我建议阅读随机数字(因为这是家庭作业,我会把它留给你)。

另外,请记住在java中,您必须始终以分号结束每个语句

答案 1 :(得分:2)

  

Java中的randrange会是什么?

通过调用nextInt(int n)方法,您可以从Java的Random类中获取特定范围内的随机整数。例如,

Random rand = new Random();
int a = rand.nextInt(7);

会给你一个随机整数&gt; = 0和&lt; 7.这与Python中的randrange不完全相同,但您可以将其用作对象数组的索引,或者作为单个骰子的滚动值。

答案 2 :(得分:1)

Randrange可以被java.util.Random中的方法替换。与Python一样,Java有一个广泛的标准库,您应该参考它。

答案 3 :(得分:1)

1)在Java中,“OR”运算符是“||”不是“&amp;&amp;”和比较运算符是“==”,如在Python

所以

if roll == 7 or roll == 11:

应该是

if( roll == 7 || roll == 11 ) {

而不是

 if( roll = 7 && 11 ){

2) randrange是:random generator您可以在那里搜索:Random in Java

这会引导您:Random.nextInt()

使用此算法(a)在Internet上搜索Python函数,b)了解它的作用c)在java中搜索它,以便完成下一个任务并完成任务。

您可以随时再次询问,这是该网站的全部内容about after all

答案 4 :(得分:0)

我建议您在randrange()上查找文档。一旦你确切地知道它的作用,请谷歌搜索这些关键字,再加上单词Java。

您在使用语言时会很快发现的一件事是API可能非常不同。在Java中可能没有等效的randrange,但是您可以找到两个或三个可以组合起来执行相同操作的函数。

答案 5 :(得分:0)

System.out.print不会导致系统等待某人点击回车键。为此,您需要对System.in执行某些操作,最有可能是System.in.read(),因为它会在等待输入时阻止。

此外,在Java中,程序开始使用main方法执行。确切地说,可执行类的开头是这样的:

// You'll need the Random class, as per other answers
import java.util.Random;
// assuming WinCraps is the class name
public class WinCraps {
    // args in this example is a string array of command-line arguments
    public static void main(String[] args) {
        // This is where your main method (that calls winCraps?) would be
    }

    // Other methods
}

此外,此类中直接从main调用的任何方法也必须是静态的

答案 6 :(得分:0)

用英文写出Python程序的功能。逐行浏览并向自己解释所引发的计算,换句话说......发生了什么?

然后,从该描述中编写Java程序。

永远不要尝试将程序文本从一种语言转换为另一种语言。你会遇到很多问题因为每种语言都不同,无论它们看起来多么相似。

答案 7 :(得分:-1)

您在Java转换中的第一个程序中的一个主要错误是条件。

像(roll = 2&amp;&amp; 3&amp;&amp; 12)这样的东西将2分配给roll,然后应用AND运算符。你也忘了if。你在Python中有elseif。

你想要这样的东西:

否则if(roll == 2 || roll == 3 || roll == 12)

对于随机数,Java中有一个函数。