我正在开发一款名为“奶牛与公牛”的游戏。基本上,这是一个数字猜谜游戏,玩家一选择一个随机的、不同的 4 位数字,玩家二尝试猜测该数字。
例如,
-玩家一选择随机数:1465 -玩家二猜数字:6432。由于玩家二猜的数字有一个共同的数字(6),所以这个数字有一个“牛”。“牛”是指玩家二猜的数字与玩家一选的随机数共享一个共同的数字,但它不在同一个地方(6 是玩家 2 号码中的第一个数字,而它是玩家 1 号码中的第三个数字.)
- 如果玩家二猜数字:1466,则有 1 个“牛”和 3 个“公牛”。“公牛”是指玩家 2 猜测的数字与玩家 1 的数字相同,并且位于同一位置。
我的问题是,我需要创建一个返回整数中数字位置的方法。
例如,如果我有一个整数“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)
{
}
}