hamid_c
یک شنبه 09 فروردین 1394, 20:12 عصر
سلام
اول عذر خواهی میکنم اگه جای اشتباهی سوالمو پرسیدم، چون جایی تو تاپیک جاوا برای مبتدی ها پیدا نکردم
من تازه چند روزی هست که شروع کردم به یادگیری جاوا، منبعی هم که میخونم کتاب دایتل هست
تو یکی از مثال هاش یه مشکلی داشتم و متوجه نمیشم چی شده
برنامه هم در مورد یه بازی پرتاب تاس هست
به این صورت که دو تا تاس پرتاب میشه
تو پرتاب اول اگه مجموع تاس ها شد 7 یا 11 برنده میشید، اما اگه مجموع تاس ها شد 2 یا 3 یا 12 شما بازنده هستین
در غیر این صورت مجموع تاس ها میشه پوینت شما، که تو پرتاب های بعدی باید دوباره مجموع تاس هاتون برابر با پوینت بشه
بازی اینقد ادامه پیدا میکنه تا اینکه مجموع تاس هاش شما برابر با پوینت بشه ( که در این صورت برنده میشید ) یا مجموع تاس ها 7 میشه ( که در این صورت بازنده هستید )
حالا مشکل من این قسمت هست که متوجه نمیشم
تو خط 26 میاد یه متغیر (myPoint) تعریف میکنه و مقدار اولیه بهش میده
کار این متغیر هم اینه که اگه نتیجه ی بازی در پرتاب اول مشخص نشد میاد مجموع تاس ها رو ذخیره میکنه که جلوتر با مقدار مجموع تاس های بعدی مقایسه کنه و .........
مشکلم اینه که چرا حتما باید مقدار اولیه داده بشه به این متغیر؟؟؟ و اگه مقدار دهی نشه موقع کامپایل ارور میده؟؟؟
مگه اینطور نیست که زمانی این متغیر مورد استفاده قرار میگیره که نتیجه بازی تو پرتاب اول مشخص نشه ( که در این صورت تو قسمت switch موردی که انتخاب میشه default هست و اونجا متغیر myPoint مقدار دهی میشه )
اگر هم تو پرتاب اول نتیجه مشخص شه که دیگه وارد حلقه (خط 54-65) نمیشه و اصن دیگه نیازی به بررسی myPoint نیست که بخواد مقدار داشته باشه یا نه
چرا باید این متغیر مقدار اولیه بگیره؟؟؟
ممنون
// Craps class simulates the dice game craps.
import java.util.Random;
public class Craps
{
// create random number generator for use in method rollDice
private static final Random randomNumbers = new Random();
// enumeration with constants that represent the game status
private enum Status { CONTINUE, WON, LOST };
// constants that represent common rolls of the dice
private static final int SNAKE_EYES = 2;
private static final int TREY = 3;
private static final int SEVEN = 7;
private static final int YO_LEVEN = 11;
private static final int BOX_CARS = 12;
// plays one game of craps
public static void main( String[] args )
{
int myPoint = 0; // point if no win or loss on first roll
Status gameStatus; // can contain CONTINUE, WON or LOST
int sumOfDice = rollDice(); // first roll of the dice
// determine game status and point based on first roll
switch ( sumOfDice )
{
case SEVEN: // win with 7 on first roll
case YO_LEVEN: // win with 11 on first roll
gameStatus = Status.WON;
break;
case SNAKE_EYES: // lose with 2 on first roll
case TREY: // lose with 3 on first roll
case BOX_CARS: // lose with 12 on first roll
gameStatus = Status.LOST;
break;
default: // did not win or lose, so remember point
gameStatus = Status.CONTINUE; // game is not over
myPoint = sumOfDice; // remember the point
System.out.printf( "Point is %d\n", myPoint );
break; // optional at end of switch
} // end switch
// while game is not complete
while ( gameStatus == Status.CONTINUE ) // not WON or LOST
{
sumOfDice = rollDice(); // roll dice again
// determine game status
if ( sumOfDice == myPoint ) // win by making point
gameStatus = Status.WON;
else
if ( sumOfDice == SEVEN ) // lose by rolling 7 before point
gameStatus = Status.LOST;
} // end while
// display won or lost message
if ( gameStatus == Status.WON )
System.out.println( "Player wins" );
else
System.out.println( "Player loses" );
} // end main
// roll dice, calculate sum and display results
public static int rollDice()
{
// pick random die values
int die1 = 1 + randomNumbers.nextInt( 6 ); // first die roll
int die2 = 1 + randomNumbers.nextInt( 6 ); // second die roll
int sum = die1 + die2; // sum of die values
// display results of this roll
System.out.printf( "Player rolled %d + %d = %d\n",
die1, die2, sum );
return sum; // return sum of dice
} // end method rollDice
} // end class Craps
اول عذر خواهی میکنم اگه جای اشتباهی سوالمو پرسیدم، چون جایی تو تاپیک جاوا برای مبتدی ها پیدا نکردم
من تازه چند روزی هست که شروع کردم به یادگیری جاوا، منبعی هم که میخونم کتاب دایتل هست
تو یکی از مثال هاش یه مشکلی داشتم و متوجه نمیشم چی شده
برنامه هم در مورد یه بازی پرتاب تاس هست
به این صورت که دو تا تاس پرتاب میشه
تو پرتاب اول اگه مجموع تاس ها شد 7 یا 11 برنده میشید، اما اگه مجموع تاس ها شد 2 یا 3 یا 12 شما بازنده هستین
در غیر این صورت مجموع تاس ها میشه پوینت شما، که تو پرتاب های بعدی باید دوباره مجموع تاس هاتون برابر با پوینت بشه
بازی اینقد ادامه پیدا میکنه تا اینکه مجموع تاس هاش شما برابر با پوینت بشه ( که در این صورت برنده میشید ) یا مجموع تاس ها 7 میشه ( که در این صورت بازنده هستید )
حالا مشکل من این قسمت هست که متوجه نمیشم
تو خط 26 میاد یه متغیر (myPoint) تعریف میکنه و مقدار اولیه بهش میده
کار این متغیر هم اینه که اگه نتیجه ی بازی در پرتاب اول مشخص نشد میاد مجموع تاس ها رو ذخیره میکنه که جلوتر با مقدار مجموع تاس های بعدی مقایسه کنه و .........
مشکلم اینه که چرا حتما باید مقدار اولیه داده بشه به این متغیر؟؟؟ و اگه مقدار دهی نشه موقع کامپایل ارور میده؟؟؟
مگه اینطور نیست که زمانی این متغیر مورد استفاده قرار میگیره که نتیجه بازی تو پرتاب اول مشخص نشه ( که در این صورت تو قسمت switch موردی که انتخاب میشه default هست و اونجا متغیر myPoint مقدار دهی میشه )
اگر هم تو پرتاب اول نتیجه مشخص شه که دیگه وارد حلقه (خط 54-65) نمیشه و اصن دیگه نیازی به بررسی myPoint نیست که بخواد مقدار داشته باشه یا نه
چرا باید این متغیر مقدار اولیه بگیره؟؟؟
ممنون
// Craps class simulates the dice game craps.
import java.util.Random;
public class Craps
{
// create random number generator for use in method rollDice
private static final Random randomNumbers = new Random();
// enumeration with constants that represent the game status
private enum Status { CONTINUE, WON, LOST };
// constants that represent common rolls of the dice
private static final int SNAKE_EYES = 2;
private static final int TREY = 3;
private static final int SEVEN = 7;
private static final int YO_LEVEN = 11;
private static final int BOX_CARS = 12;
// plays one game of craps
public static void main( String[] args )
{
int myPoint = 0; // point if no win or loss on first roll
Status gameStatus; // can contain CONTINUE, WON or LOST
int sumOfDice = rollDice(); // first roll of the dice
// determine game status and point based on first roll
switch ( sumOfDice )
{
case SEVEN: // win with 7 on first roll
case YO_LEVEN: // win with 11 on first roll
gameStatus = Status.WON;
break;
case SNAKE_EYES: // lose with 2 on first roll
case TREY: // lose with 3 on first roll
case BOX_CARS: // lose with 12 on first roll
gameStatus = Status.LOST;
break;
default: // did not win or lose, so remember point
gameStatus = Status.CONTINUE; // game is not over
myPoint = sumOfDice; // remember the point
System.out.printf( "Point is %d\n", myPoint );
break; // optional at end of switch
} // end switch
// while game is not complete
while ( gameStatus == Status.CONTINUE ) // not WON or LOST
{
sumOfDice = rollDice(); // roll dice again
// determine game status
if ( sumOfDice == myPoint ) // win by making point
gameStatus = Status.WON;
else
if ( sumOfDice == SEVEN ) // lose by rolling 7 before point
gameStatus = Status.LOST;
} // end while
// display won or lost message
if ( gameStatus == Status.WON )
System.out.println( "Player wins" );
else
System.out.println( "Player loses" );
} // end main
// roll dice, calculate sum and display results
public static int rollDice()
{
// pick random die values
int die1 = 1 + randomNumbers.nextInt( 6 ); // first die roll
int die2 = 1 + randomNumbers.nextInt( 6 ); // second die roll
int sum = die1 + die2; // sum of die values
// display results of this roll
System.out.printf( "Player rolled %d + %d = %d\n",
die1, die2, sum );
return sum; // return sum of dice
} // end method rollDice
} // end class Craps