我正在研究一个项目,我编写了我知道该怎么做的代码。我遇到了多个问题,我不知道是否应该立即发布整个项目代码,或者只关注一个问题。
游戏的方向是:“在游戏开始时,玩家和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;谢谢!
答案 0 :(得分:-1)
我想你想从PoolValidity返回“isValid”?
另一个猜测是,当您确定池有效时,您希望立即返回,即“isValid = true”
我还要仔细看看你的if-test。我不相信这是正确的。