2010-01-21 66 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程序。

永遠不要試圖將程序的文本從一種語言轉換爲另一種語言。你會遇到很多問題,因爲每種語言都是不同的,不管它們有多相似。