光滑的挑选游戏 - 布尔函数和返回语句

时间:2014-12-16 18:06:58

标签: java function boolean

我正在研究一个项目,我编写了我知道该怎么做的代码。我遇到了多个问题,我不知道是否应该立即发布整个项目代码,或者只关注一个问题。

游戏的方向是:“在游戏开始时,玩家和Slick的得分都设置为零。每回合,玩家从游泳池中选择一个数字。该值被添加到玩家的得分中Slick获得池中所有剩余数字的总和,均匀分配到玩家的选择中。然后将玩家的选择和它的除数从池中移除。对于每一轮,Slick必须能够获得至少一个数字。玩家没有任何选择权,游戏结束,Slick得到游泳池中所有剩余数字的总和。最高分获胜。“

如果玩家的选择有效,则打印除数列表;如果玩家的选择无效,则应打印错误消息并再次出现提示。要使选择合法,它必须在池中,并且池中必须至少有一个除数。我的代码如下:

//Name          : pickValidity
//Description   : This funtion determines if the player's pick is valid.
//Parameters    : The pool array and the user's pick, in that order.
//Return        : True/false indicator.  
public static boolean pickValidity(int[] pool, int size, int pick){
    int low=0;
    int high=size-1;
    int mid;
    int poolIndex=0;
    boolean found=false;
    boolean isValid=false;

    while(low<=high && !found){
        mid=(low + high) / 2;
        if(pick == pool[mid]){
            found = true;
        }else if(pick < pool[mid]){
            high = mid-1;
        }else{
            low = mid+1;
        }
    }
    if(found){
        while(pool[poolIndex] < pick && !isValid){
        if(pick % pool[poolIndex] == 0){
            isValid = true; 
        }else{
            isValid = false;
        } 
        poolIndex++;
        }
    }
    return(isValid);
} 

下面,我添加了我的调用语句。当我运行程序并故意输入无效的选择时,提示再次出现,但在我输入另一个数字后,程序停止。我该如何继续前进?

        // User Input
    printPool(pool, size);
    System.out.println();
    System.out.println();
    System.out.println("Enter a non-prime value listed in the pool above: ");
    pick=read.nextInt();

        // Pick Validity
    while(!(pickValidity(pool, size, pick) && poolValidity(pool, pick))){
        System.out.println("Pick is invalid.");
        System.out.println();
        System.out.println("Enter a non-prime value listed in the pool above: ");
        pick=read.nextInt();
    }

        // Data Processing
    numDivisors = getDivisors(pool, divisors, pick);

        // Output Section
    printDivisors(divisors, numDivisors, pick);
    System.out.println();
    printScores(divisors, size, pick);
    System.out.println();


    System.out.println();
    System.out.println();
    System.out.println();
    System.out.println("Program Ended");  
   }

请&amp;谢谢!

1 个答案:

答案 0 :(得分:-1)

我想你想从PoolValidity返回“isValid”?

另一个猜测是,当您确定池有效时,您希望立即返回,即“isValid = true”

我还要仔细看看你的if-test。我不相信这是正确的。