Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hi I am writing a Java program for a ThreeDice Game and I was wondering how to a

ID: 3726527 • Letter: H

Question

Hi I am writing a Java program for a ThreeDice Game and I was wondering how to avoid this non-static method cannot be referenced from a static context compilation error.

Error from compiler is:

" java:21: error: non-static method NumberOfRoundsToPlay() cannot be referenced from a static context

NumberOfRoundsToPlay();

^

Game.java:24: error: non-static method StartRounds() cannot be referenced from a static context

StartRounds();"

NumberOfRoundsToPlay();

^

Game.java:24: error: non-static method StartRounds() cannot be referenced from a static context

StartRounds();

My question basically is how can I fix this code to make it compile. Thanks

"

import java.util.Scanner;

public class Game {

// Declaring Class Local Varibles
private int Player1;
private int Player2;
private int Player1Total;
private int Player2Total;
private int dice1;
private int dice2;
private int dice3;
private int RoundCounter;
private int RoundsToPlay;

public static int main (String args[])
{


NumberOfRoundsToPlay();


StartRounds();

}


// This Method Gets User Input on How Many Games They Would Like to Play
public void NumberOfRoundsToPlay()
{
try { System.out.print("How Many Games You Would Like to Play!");
Scanner in = new Scanner (System.in);
RoundsToPlay = in.nextInt(); }
catch (Exception e) { System.out.print("Please Enter a Positive Integer");}

NumberOfRoundsToPlay(); //Recursive to Prompt User for Valid Input

}

public void StartRounds()
{

for (int i=1;i<=RoundsToPlay;i++)
{
PlayGame();
}

}


public void PlayGame()
{
RoundCounter = RoundCounter + 1; // Counts the number of rounds

// Player 1 Dice Roll
dice1 = (int)(Math.random()*6+1);
dice2 = (int)(Math.random()*6+1);
dice3 = (int)(Math.random()*6+1);

System.out.print("Round " + RoundCounter + " Player 1: ");
ThreeDice diceRollPlayer1 = new ThreeDice(dice1, dice2, dice3);


ThreeDiceScorer GetPoints = new ThreeDiceScorer(dice1, dice2,dice3);

diceRollPlayer1.printResult();

Player1 = Player1 + GetPoints.points(dice1,dice2,dice3);
Player1Total = Player1Total + Player1;
System.out.println("Player 1 Points: " + Player1);


// Player2 Dice Roll
dice1 = (int)(Math.random()*6+1);
dice2 = (int)(Math.random()*6+1);
dice3 = (int)(Math.random()*6+1);

System.out.print("Round " + RoundCounter + " Player 2: ");
ThreeDice diceRollPlayer2 = new ThreeDice(dice1, dice2, dice3);

diceRollPlayer2.printResult();

Player2 = Player2 + GetPoints.points(dice1,dice2,dice3);
Player2Total = Player2Total + Player2;
System.out.println("Player 2 Points: " + Player2);


if (Player1 < Player2)
{
System.out.println("Player2 is the Winner!");

}
else if(Player1 == Player2)
{
System.out.println("It's a Tie!");

}

else if(Player1 > Player2)
{
System.out.println("Player1 is the Winner!");

}

System.out.println("");

}

}

"

Explanation / Answer

import java.util.Scanner;

public class Game {

      

       // Declaring Class Local Varibles

       private int Player1;

       private int Player2;

       private int Player1Total;

       private int Player2Total;

       private int dice1;

       private int dice2;

       private int dice3;

       private int RoundCounter;

       private int RoundsToPlay;

       public static void main(String[] args) {

             /* main is a static function and in static function, one can use static functions and variables

             or invoke non-static functions by using the objects of the class*/

             // create an object of Game class

             Game game = new Game();

             // invoke the non-static functions

             game.NumberOfRoundsToPlay();

             game.StartRounds();

       }

      

       // This Method Gets User Input on How Many Games They Would Like to Play

       public void NumberOfRoundsToPlay()

       {

             try

             {

                    System.out.print("How Many Games You Would Like to Play!");

                    Scanner in = new Scanner (System.in);

                    RoundsToPlay = in.nextInt();

             }catch (Exception e)

             {

                    System.out.print("Please Enter a Positive Integer");

             }

      

                    NumberOfRoundsToPlay(); //Recursive to Prompt User for Valid Input

       }

      

       public void StartRounds()

       {

            

             for (int i=1;i<=RoundsToPlay;i++)

             {

                    PlayGame();

             }

       }

      

       public void PlayGame()

       {

             RoundCounter = RoundCounter + 1; // Counts the number of rounds

             // Player 1 Dice Roll

             dice1 = (int)(Math.random()*6+1);

             dice2 = (int)(Math.random()*6+1);

             dice3 = (int)(Math.random()*6+1);

             System.out.print("Round " + RoundCounter + " Player 1: ");

             ThreeDice diceRollPlayer1 = new ThreeDice(dice1, dice2, dice3);

            

             ThreeDiceScorer GetPoints = new ThreeDiceScorer(dice1, dice2,dice3);

             diceRollPlayer1.printResult();

             Player1 = Player1 + GetPoints.points(dice1,dice2,dice3);

             Player1Total = Player1Total + Player1;

             System.out.println("Player 1 Points: " + Player1);

            

             // Player2 Dice Roll

             dice1 = (int)(Math.random()*6+1);

             dice2 = (int)(Math.random()*6+1);

             dice3 = (int)(Math.random()*6+1);

             System.out.print("Round " + RoundCounter + " Player 2: ");

             ThreeDice diceRollPlayer2 = new ThreeDice(dice1, dice2, dice3);

             diceRollPlayer2.printResult();

             Player2 = Player2 + GetPoints.points(dice1,dice2,dice3);

             Player2Total = Player2Total + Player2;

             System.out.println("Player 2 Points: " + Player2);

            

             if (Player1 < Player2)

             {

             System.out.println("Player2 is the Winner!");

             }

             else if(Player1 == Player2)

             {

             System.out.println("It's a Tie!");

             }

             else if(Player1 > Player2)

             {

             System.out.println("Player1 is the Winner!");

             }

             System.out.println("");

            

       }

}

// end of program