2013-10-09 4 views
-5
public static boolean checkGuess(String getGuess, double getBet){ 
    double num = Math.round(Math.random()*10); 
    boolean correctSide = false; 
    if (num <=5 && getGuess.equals("H")){ 
     correctSide = true; 
    } else if (num >=6 && getGuess.equals("T")){ 
     correctSide = true; 
    } else { 
     correctSide = false; 
    } 
    updateBal(correctSide, getBet); 
    return correctSide; 
} 

По какой-то причине это ВСЕГДА возвращает true. Любые идеи, почему?Метод всегда возвращается True

+1

Что это должно делать? – arshajii

+3

Вы отлаживали это? –

+1

Невозможно. 'Math.round (Math.random())' всегда 1. – ohaleck

ответ

2

Там он:

public static double updateBal(boolean correctSide, double getBet){ 
      double balance = getBal(); 
      if (correctSide = true){ 
        balance = getBet * 2 + balance; 
        System.out.println("Correct. Your balance is now $" + balance); 
      } else { 
        balance = balance - getBet; 
        System.out.println("Incorrect. Your balance is now $" + balance); 
      } 
      return balance; 
    } 

Вы должны проверить с: если (correctSide == верно). Вы в настоящее время выполняете correctSide = true, и поэтому вы всегда говорите, что correctSide верно.

+3

Или просто просто 'if (correctSide)' –

+0

Aha! Огромное спасибо. Один маленький знак равенства ... –

+0

Таким образом, метод не возвращался true, но 'updateBal' всегда добавлял ставку. – iamnotmaynard

1

Я проверил ваш код и следующую часть, кажется, для правильной работы:

double num = Math.round(Math.random()); 
boolean correctSide = false; 
if (num == 0 && getGuess.equals("H")){ 
    correctSide = true; 
} else if (num == 0 && getGuess.equals("T")){ 
    correctSide = true; 
} else { 
    correctSide = false; 
} 
return correctSide; 

Пожалуйста, поделитесь, что вы делаете в updateBal (correctSide, getBet);

+0

Math.round (Math.random()) не всегда возвращается 1. Math.random() возвращает значение от 0 до 1, а Math.round() имеет следующую реализацию: public static long round (double a) { return (int) floor (a + 0.5f); } – hasan

+0

Pastebin.com, похоже, не работает, поэтому: http://www.pastebin.ca/2464848 –

Смежные вопросы