package LotteryOdds;import java.util.Scanner;public class LotteryOdds 
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);

System.out.print("How many numbers do you need to draw? ");
int k = in.nextInt();

System.out.print("What is the highest number you can draw? ");
int n = in.nextInt();

double lotteryOdds = 1.0;
for(int i = 1; i <= k;i++)
{
lotteryOdds = lotteryOdds * (n - i + 1)/i ;
}

System.out.println("Your odds are 1 in " + lotteryOdds + ". Good luck!");// 输出结果为何得0.0
}}

解决方案 »

  1.   

    double lotteryOdds =1.0;
    for(int i = 1; i <= k;i++)
    {
    lotteryOdds = 1.0;
    System.out.println("n:"+n+"-"+"i:"+i);
    System.out.println(n-i+1);
    System.out.println(lotteryOdds);
    lotteryOdds = lotteryOdds * (n - i + 1)/i ;
    }
    楼主你把lotteryOdds的初始值定义在for外面的。当你的lotteryOdds * (n - i + 1)/i =0以后。
    你的lotterOdds不就是0了吗?而接下来的不管怎么算不都是0了吗?在循环里面初始化