(Java) 在执行我的硬币抛掷程序代码时,我遇到了逻辑错误。

huangapple go评论139阅读模式
英文:

(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 &quot;heads&quot;;
      }
      
      else {
      return &quot;tails&quot;;
      }
   }
   
   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 &lt; 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 &quot;heads&quot;;
        }
        else {
            return &quot;tails&quot;;
        }
    }

    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 &lt; 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 &quot;tails&quot;;
    }
    else {
        return &quot;heads&quot;;
    }
}

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 &lt; 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&lt;flips;i++){
         coinFlip(rand);
      }
   }
   
    public static String coinFlip(Random rand){
      if(rand.nextInt(2)+1 == 1){
         System.out.println(&quot;Tails&quot;);
         return &quot;Tails&quot;;
      } else {
         System.out.println(&quot;Heads&quot;);
         return &quot;Heads&quot; ;
      }
     
   }
}

答案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 &quot;Tails&quot;;
         }
      else{
         return &quot;Heads&quot;;
         }
      
      }
   
   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 &lt; numFlips; ++i){
         results = coinFlip(rand);
         System.out.println(results);
         }
   }
}

huangapple
  • 本文由 发表于 2020年10月27日 09:14:13
  • 转载请务必保留本文链接:https://go.coder-hub.com/64547061.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定