2010-01-21 62 views
2

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

难道有人请帮助我做了什么,并给我一些建议吗?也许是一个初学者的好网站....有人知道Python(仅从第一个CS课程的角度来看)。

1)在蟒蛇

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

*请记住,我刚学这个东西笑

+19

对于上帝的爱继续使用你从Python学到的缩进技能 – 2010-01-21 21:21:15

回答

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中,你必须总是最后每个语句用分号

+3

不应该使用'||'代替 '&&'? – 2010-01-21 21:19:29

+0

@Fred,注意,谢谢。 – 2010-01-21 21:21:05

+0

我认为你从OP的Java代码中继承了这个错误。不过,Python正确地具有'或'。 – 2010-01-21 21:25:03

0

我建议你查查关于randrange()的文档。一旦你确切知道它做了什么,谷歌为这些关键字,加上字Java。

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

1

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

-1

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

喜欢的东西(辊= 2 & & 12)分配2滚动,然后应用AND运算符。你也忘了if。你在Python中还有其他的东西。

你想是这样的:如果

其他(卷== 2 ||辊== 3 ||辊== 12)

至于随机数,有一个在Java中的函数。

+0

我想知道为什么这是downvoted? – Uri 2010-01-22 23:43:41

2

randrange在Java中会是什么?

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

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

会给你的随机整数> = 0和< 7。这是不完全一样在Python randrange,但也可以用它作为索引的对象的阵列,或作为一个单一骰子的价值。

0

System.out.print不会导致系统等待某人按Enter键。为此,您需要使用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 
} 

此外,在这个类直接从主必须调用的任何方法也有静态的

+0

如何使用扫描仪读取输入? java.util.Scanner – Nope 2010-01-22 04:08:13

1

1)在Java中,“OR”运算符是“||”不是 “& &” 和比较运算符是 “==” 作为在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()

使用此算法(一)搜索Python函数上网,二)了解它c)搜查它在Java)为你接下来的任务做好准备。

您可以随时在这里问,这就是这个网站是所有about after all

+0

什么是反对票? – OscarRyz 2010-01-22 07:43:54

+0

也许是因为你有“roll == 7或roll == 1”,后面跟着“应该是”,后面跟第一次完全一样的文字? – 2010-01-22 18:13:40

+1

@Kaleb:可能是啊!,这就是为什么downvoters应该发表评论,所以我们可以修复它。谢谢 – OscarRyz 2010-01-22 19:13:59

0

写出英文Python程序做什么。换句话说,一行一行地通过它,并向自己解释什么是计算,换句话说......发生了什么?

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

永远不要试图将程序的文本从一种语言转换为另一种语言。你会遇到很多问题,因为每种语言都是不同的,不管它们有多相似。