【问题标题】:Slick pick game - boolean functions and return statementsSlick pick 游戏 - 布尔函数和返回语句
【发布时间】:2015-02-15 03:30:38
【问题描述】:

我正在处理一个项目,并且我已经编写了我知道该怎么做的代码。我遇到了多个问题,我不知道是应该一次发布整个项目代码还是一次只关注一个问题。

游戏的指示是:“在游戏开始时,玩家和 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");  
   }

请,谢谢!

【问题讨论】:

  • 首先,一次只关注一个问题。其次,我不确定你的问题到底是什么。
  • 所以,对于整个项目,我创建了一个从 1-100 的随机数池,并将它们分配给一个数组,然后打印出这个数字池。然后提示玩家从池中选择一个非质数,如果池和选择的号码都是有效的,则打印该号码的除数。我的问题是测试号码池和玩家的选择是否有效。我不知道我的代码是否走在正确的轨道上,而且我还不断收到一条错误消息,指出缺少 return 语句。

标签: java function boolean


【解决方案1】:

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

另一种猜测是你想在确定池有效时立即返回,即“isValid=true”

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

【讨论】:

  • 我更新了我的代码,但我有一个关于何时输入无效号码的新问题。我将新问题放在更新后的代码中,因此我不会在此评论中用完空间。
  • 不完全确定我是否理解你的新问题,但我认为你现在错过了你的方向的“每转一圈”部分。这个问题的答案是有一个循环重复整个过程,直到满足给定的标准。所以,也许,在你选择了一个数字并完成了任何你需要做的事情之后,你可以使用 printPool() 重新开始?
猜你喜欢
  • 2021-09-27
  • 1970-01-01
  • 2011-04-05
  • 2015-05-03
  • 2012-08-16
  • 2013-10-01
  • 2019-09-22
  • 2016-09-18
  • 2016-11-08
相关资源
最近更新 更多