英文:
(Java) I'm getting a logic error when executing my code for a Coin Flip Program
问题
这是我得到的代码:
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static String headsOrTails(Random rand) {
rand.nextInt();
if (rand.equals(0)) {
return "heads";
}
else {
return "tails";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2); // Unique seed
int userNum = scnr.nextInt();
for (int i = 0; i < userNum; i++) {
System.out.println(headsOrTails(rand));
}
}
}
英文:
Here is the code I'm given:
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
/* Define your method here */
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2); // Unique seed
// Add more variables as needed
/* Type your code here. */
}
}
I cannot make CHANGES to the code, only add things to it. My instructions are:
Write a program that simulates flipping a coin to make decisions. The input is how many decisions are needed, and the output is either heads or tails. Assume the input is a value greater than 0.
Ex: If the input is:
3
the output is:
tails
heads
tails
For reproducibility needed for auto-grading, seed the program with a value of 2. In a real program, you would seed with the current time. In that case, every program's output would be different, which is what is desired but can't be auto-graded.
Note: A common student mistake is to create an instance of Random before each call to rand.nextInt(). But seeding should only be done once, at the start of the program, after which rand.nextInt() can be called any number of times.
Your program must define and call the following method that randomly picks 0 or 1 and returns "heads" or "tails". Assume the value 0 represents "heads" and 1 represents "tails".
public static String headsOrTails(Random rand)
Here is what I have:
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static String headsOrTails(Random rand) {
rand.nextInt();
if (rand.equals(0)) {
return "heads";
}
else {
return "tails";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2); // Unique seed
int userNum = scnr.nextInt();
for (int i = 0; i < userNum; i++) {
System.out.println(headsOrTails(rand));
}
}
}
When executing the code, I get tails tail tails, every time.
答案1
得分: 4
import java.util.Scanner;
import java.util.Random;
class LabProgram {
public static String headsOrTails(Random rand) {
boolean r = rand.nextBoolean();
if (r) {
return "heads";
}
else {
return "tails";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(System.currentTimeMillis()); // Unique seed
int userNum = scnr.nextInt();
for (int i = 0; i < userNum; i++) {
System.out.println(headsOrTails(rand));
}
}
}
英文:
The Random package can actually return a random boolean value. If you pass 2
when you create the Random object, you'll always get the same sequence. To avoid that, pass in the current Unix time:
import java.util.Scanner;
import java.util.Random;
class LabProgram {
public static String headsOrTails(Random rand) {
boolean r = rand.nextBoolean();
if (r) {
return "heads";
}
else {
return "tails";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(System.currentTimeMillis()); // Unique seed
int userNum = scnr.nextInt();
for (int i = 0; i < userNum; i++) {
System.out.println(headsOrTails(rand));
}
}
}
答案2
得分: 0
import java.util.Scanner;
import java.util.Random;
class LabProgram {
public static String headsOrTails(Random rand) {
boolean r = rand.nextBoolean();
if (r) {
return "正面";
}
else {
return "反面";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2); // 独特的种子
int userNum = scnr.nextInt();
for (int i = 0; i < userNum; i++) {
System.out.println(headsOrTails(rand));
}
}
}
英文:
import java.util.Scanner;
import java.util.Random;
class LabProgram {
public static String headsOrTails(Random rand) {
boolean r = rand.nextBoolean();
if (r) {
return "tails";
}
else {
return "heads";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2); // Unique seed
int userNum = scnr.nextInt();
for (int i = 0; i < userNum; i++) {
System.out.println(headsOrTails(rand));
}
}
答案3
得分: 0
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2);
int flips = scnr.nextInt();
for (int i = 0; i < flips; i++) {
coinFlip(rand);
}
}
public static String coinFlip(Random rand) {
if (rand.nextInt(2) + 1 == 1) {
System.out.println("Tails");
return "Tails";
} else {
System.out.println("Heads");
return "Heads";
}
}
}
英文:
import java.util.Scanner;
import java.util.Random;
public class LabProgram{
public static void main(String[] args){
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2);
int flips = scnr.nextInt();
for(int i=0;i<flips;i++){
coinFlip(rand);
}
}
public static String coinFlip(Random rand){
if(rand.nextInt(2)+1 == 1){
System.out.println("Tails");
return "Tails";
} else {
System.out.println("Heads");
return "Heads" ;
}
}
}
答案4
得分: 0
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static String coinFlip(Random rand){
int coinFlip = rand.nextInt(2);
if(coinFlip == 0){
return "正面";
}
else{
return "反面";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2); // 在开发模式中使用的种子
int numFlips = scnr.nextInt();
String results;
for(int i = 0; i < numFlips; ++i){
results = coinFlip(rand);
System.out.println(results);
}
}
}
英文:
import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static String coinFlip(Random rand){
int coinFlip = rand.nextInt(2);
if(coinFlip == 0){
return "Tails";
}
else{
return "Heads";
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Random rand = new Random(2); // Seed used in develop mode
int numFlips = scnr.nextInt();
String results;
for(int i = 0; i < numFlips; ++i){
results = coinFlip(rand);
System.out.println(results);
}
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论