gpt4 book ai didi

java - 需要帮助创建方法以返回整数中数字的位置

转载 作者:行者123 更新时间:2023-11-30 11:34:22 24 4
gpt4 key购买 nike

我正在开发一款名为“Cows and Bulls”的游戏。基本上,这是一个数字猜谜游戏,玩家一随机选择一个不同的 4 位数,玩家二尝试猜测这个数字。

例如,

-玩家一选择随机数:1465- 玩家二猜数字:6432。由于玩家二猜的数字共享一个公共(public)数字(6),因此该数字有一个“牛”。 “牛”是指两个玩家猜测的数字与一个玩家选择的随机数共享一个公共(public)数字,但它不在同一个地方(6 是玩家 2 号码中的第一个数字,而它是玩家 1 号码中的第三个数字.)

-如果玩家二猜数字:1466,则有 1 个“牛”和 3 个“公牛”。 “公牛”是指玩家二猜的数字与玩家一猜的数字相同,并且在同一个地方。

我的问题是,我需要创建一个方法来返回整数中数字的位置。

例如,如果我有一个整数“1456”,我需要一种方法来告诉我任何给定数字的位置(从右边开始)。所以如果我想知道数字“5”在哪里,它会告诉我“2”,因为它在右边第二个。如果我想知道“1”在哪里,它会告诉我“4”,因为它在右数第四个。

不能使用任何内置的 java 字符串方法。

以下是我到目前为止所写的内容,它根本没有组织,因为我仍在努力。

此方法必须调用方法“numDigits”和“getDigit”,这就是我将它们留在代码中的原因。 “numDigits”返回数字中的位数。 “getDigit”返回特定位置的数字。因此,如果我有一个数字“12345”,如果我输入“4”,getDigit 将返回“2”,因为“2”在数字中从右数第四个。

您可以看到我在代码底部开始了“indexOf”。

抱歉,如果我还不够清楚,我是 Java 的新手,所以我不知道解释所有内容的最佳方式。

package pa3;
import java.util.*;
import java.util.Scanner;

public class CowsAndBulls {

/**
* @param args
*/
public static void main(String[] args) {
//System.out.println("Welcome to Cows and Bulls Game. I picked a random 4-digit number with distinct integers, try finding it. Type your guess, must be a 4-digit number with distinct digits.");
//System.out.println(numDigits(12346));
System.out.println(getDigit(12345, 5));
System.out.println(hasDistinctDigits(1234));
}
public static int numDigits(int number)
{
{

int counter = 0;

while(number > 0)
{
number = number/10;
counter++;
}

return counter;
}
}


public static int getDigit(int number, int i)
{
{
int digit = 0;

if (i <= numDigits(number))
{
while (i > 0)
{
digit = number % 10;
number = number / 10;
i--;
}
}
return digit; }
}






public static boolean hasDistinctDigits(int number)
{
if(getDigit(number, 1) != getDigit(number, 2) &&
getDigit(number, 1) != getDigit(number, 3) &&
getDigit(number, 1) != getDigit(number, 4) &&
getDigit(number, 2) != getDigit(number, 3) &&
getDigit(number, 2) != getDigit(number, 4) &&
getDigit(number, 3) != getDigit(number, 4))
{
return true;
}
else return false;

}

public static int generateSecretNumber()
{
Random r = new Random();
int randNum = r.nextInt(9999);

while (hasDistinctDigits(randNum) = true)
{
randNum = r.nextInt();
return randNum;

}

}
public static void indexOf(int number, int digit)
{

}




}

最佳答案

如果我对你的理解正确,你可以只使用你的两种方法并遍历数字:

 public static int indexOf(int number, int digit)
{
int count = numDigits(number);
for(int i = 1; i <= count; i++)
{
if(digit == getDigit(number, i))
return i;
}
return -1; //the digit was not found
}

关于java - 需要帮助创建方法以返回整数中数字的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15695880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com