2010-01-21 2 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 

Это один спутал ад меня. Что будет randrange в Java?

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. –

ответ

2

Вы должны исправить свои если заявления о «==» проверки оператора равенства, и вы должны поместите переменную, которую вы проверяете, в каждом разделе инструкции.

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

Разве вы не должны использовать '||' вместо '&&'? –

+0

@Fred, отметил, спасибо. –

+0

Я думаю, что вы унаследовали эту ошибку от кода Java OP. Однако у Python есть «или». –

0

Я рекомендовал бы, чтобы вы посмотрите документацию на randrange(). Как только вы точно знаете, что он делает, google для этих ключевых слов, плюс слово Java.

Одна вещь, которую вы быстро обнаружите при работе с языками, заключается в том, что API-интерфейсы могут быть разными. В Java не может быть эквивалент randrange, но вы можете найти две или три функции, которые вы можете комбинировать, чтобы сделать то же самое.

1

Randrange может быть заменен методами в java.util.Random. Как и Python, Java имеет обширную стандартную библиотеку, которую вы должны ссылаться.

-1

Одна из основных ошибок в вашей первой программе, которую вы имеете в преобразовании Java, - это условные обозначения.

Нечто подобное (рулон = 2 & & 12) назначает 2 катиться, а затем применяет и операторы. Вы также забыли, если. У вас есть elseif в Python.

Вы хотите что-то вроде:

еще если (рулон == 2 || ролл == 3 || рулет == 12)

Что касается случайных чисел, есть функция для этого в Java ,

+0

Мне интересно, почему это было приостановлено? – Uri

2

Что будет randrange в Java?

Вы можете получить случайное целое число в определенном диапазоне от Java класса Random, вызвав метод nextInt(int n). Например,

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

даст вам случайное число> = 0 и < 7. Это не точно так же, как randrange в Python, но вы можете использовать его в качестве индекса массива объектов, или как значение рулона одиночной матрицы.

0

System.out.print не заставит систему ждать, пока кто-то ударит по клавише ввода. Для этого вам нужно что-то сделать с System.in, скорее всего, System.in.read(), так как он блокируется при ожидании ввода.

Кроме того, в Java программа запускает основной метод. Чтобы быть точным, исполняемый класс начинается что-то вроде этого:

// 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

1

1) В Java Оператор «ИЛИ» имеет значение «||» не "& &" оператор и сравнение "==", как в 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, б) понять, что она делает с) искать его в Java) для следующего задания у вас есть, и вы закончили.

Вы всегда можете спросить здесь, это то, что этот сайт все about after all

+0

Что такое проголосовали? – OscarRyz

+0

Возможно, это потому, что у вас есть «roll == 7 или roll == 1», за которым следует «должно быть», за которым следует тот же текст, что и вы в первый раз? –

+1

@ Калеб: Наверное, да !, ну вот почему downvoters должны сделать комментарий, поэтому мы можем это исправить. благодаря – OscarRyz

0

Выпишите на английском языке, что делает программа Python. Пройдитесь по ней по строчке и объясните себе, какие вычисления вызваны, другими словами ... что происходит?

После этого напишите программу Java из этого описания.

Никогда не пытайтесь преобразовать текст программы с одного языка на другой. Вы столкнетесь с множеством проблем таким образом, потому что каждый язык отличается, независимо от того, насколько они похожи.

Смежные вопросы