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

标签 java indexing

我正在开发一款名为“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/

相关文章:

java - 关于 SQL 问题,我需要 Sakai 2.7.1 和 Tomcat 5.5.33 的一些帮助

c# - IKVM.net 不支持泛型(类型参数)吗?

mysql - 我应该在外键字段上指定索引吗?

algorithm - 计算倒排索引中的词接近度

java - 使用 Scanner 读取文件时出现 InputMismatchException

java - 如何让这个缓冲写入器一次写入一行? java

java - 从Java执行sh文件

sql - SQL 语句的索引

javascript - 为什么我的输入被插入到具有相同索引的两个不同数组中? (js)

php - mysql 在连接大表时有时会很慢