所以我开始参加我的第二个计算机科学课程了!对于我的第一堂课,我们使用了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
答案 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中有一个函数。