2014-10-02 2 views
-1

im пытается выполнить оператор if, и я не могу разрешить winChance в переменной внутри оператора if, если кто-то может показать мне hoew, было бы весьма полезно. ereor в "цели, прежде чем разориться является:" + winChance); „и мой последний метод winChance не возвращает двойную переменную“разрешить переменную для if-statement

import java.util.Scanner; 

public class StockiColeA1Q3 { 

    public static void main(String[] args) { 

    Scanner keyboard = new Scanner(System.in); //scanner 

    System.out.println("What is your first name? "); 
    String first = keyboard.nextLine(); 

    System.out.println("What is your last name? "); 
    String last = keyboard.nextLine(); 

    System.out.println("What is the amount of chips you are starting with, " + first +"?"); 
    int start = keyboard.nextInt(); 

    System.out.println("What is the amount of chips you wish you have ?"); 
    int end = keyboard. nextInt(); 

    System.out.println("What is the probability of each round? \n" + 
         "(A value between 0.0 and 1.0)"); 
    double p = keyboard.nextDouble(); 

    printResult(start,end,p,first,last); 

    }//main 

    public static void printResult(int start, int end, double p, String first, String last) { 

    System.out.println(first + " " + last +": If you start with " + start + " chips\n" + 
         "And do not quit until you have " + end + " chips,\n" + 
         "with the probability of " + p + " of winning each round, \n" + 
         "the chance of reaching your goal before going broke is: " + winChance); 

    }//print results 

    public static double winChance(double start, double end, double p) { 


    if (p==0.5) { 
    System.out.println(start/end); 

    }  
    else if (p>0&&p<1) { 
    System.out.println(1-(Math.pow((1-p)/p, start))/1-(Math.pow((1-p)/p, end))); 

    }//if p isnt 0.5 
    }//win chance 

}//gamblers ruin 
+0

Вы фактически не объявляете переменную winChance – SamTebbs33

ответ

0
if (p==0.5) { 
System.out.println(start/end); 
**return (start/end);** 

}  
else if (p>0&&p<1) { 
System.out.println(1-(Math.pow((1-p)/p, start))/1-(Math.pow((1-p)/p, end))); 
**return (1-(Math.pow((1-p)/p, start))/1-(Math.pow((1-p)/p, end)));** 

}//if p isnt 0.5 

Убедитесь, что вы что-то вернуть прямо сейчас вы не возвращая что-нибудь.

+0

Попробуйте это, убедитесь, что вы возвращаете double, иначе вы получите ошибку компиляции. – brso05

0

вы должны добавить скобки в конец «winChance» в заявлении для печати, наряду с аргументами. Сейчас компилятор думает, что вы используете переменную, а не вызов метода.

для пример

System.out.println(first + " " + last +": If you start with " + start + " chips\n" + 
        "And do not quit until you have " + end + " chips,\n" + 
        "with the probability of " + p + " of winning each round, \n" + 
        "the chance of reaching your goal before going broke is: " + winChance(start, end, p)); 

Вам также нужно будет выполнить ответ brso05 и вернуть значение внутри метода winChance.

PS Я предполагаю, что вы имеете в виду использовать возвращение вместо System.out.println() в вашем методе winChance, если да, то используйте следующую вместо:

if (p==0.5) { 
    return start/end; 
}  
else if (p>0&&p<1) { 
    return 1-(Math.pow((1-p)/p, start))/1-(Math.pow((1-p)/p, end)); 
} 

Вы можете прочитать подробнее об использовании методов в Java, попробуйте это http://www.tutorialspoint.com/java/java_methods.htm

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