当前位置: 首页 > 知识库问答 >
问题:

Google编码挑战未检测到int

岳风畔
2023-03-14

这个程序的目的是得到一个像“1256”这样的长变量,然后逐个数字相加,直到剩下一个个位整数。所以1 2 5 6 = 141 4=5,返回5

当我尝试验证时,它会给出错误:

com.google.challenges.中找不到参数(int)的公共静态方法答案

有人能帮我理解这个错误的含义以及如何修复它吗?

package​ ​com.google.challenges;​ ​

public​ ​class​ ​Answer​ ​{​ ​​ ​​ ​
​ ​​ ​​ ​​ ​public​ ​static​ ​int​ ​answer(long​ ​x)​ ​{​ ​

​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​long​ ​placeholder​ ​=​ ​0,​ ​sum​ ​=​ ​0;
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​for(int​ ​i​ ​=​ ​1;​ ​x​ ​>​ ​0​ ​&&​ ​sum​ ​<​ ​10;​ ​i++){
            // if x = 1256 then placeholder = 1256 % 10 = 6
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​placeholder​ ​=​ ​(long)(x​ ​%​ ​Math.pow(10,i));
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ //1256 - 6 = 1250
            ​x​ ​-=​ ​placeholder;
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​sum​ ​+=​ ​placeholder​ ​/​ ​(long)(Math.pow(10,​ ​i​ ​-​ ​1));
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​if​ ​(sum​ ​>​ ​10​ ​&&​ ​x​ ​==​ ​0){
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​i​ ​=​ ​1;
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​x​ ​=​ ​sum;
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​sum​ ​=​ ​0;
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​}
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​}
​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​return((int)sum);
​ ​​ ​​ ​​ ​}
}

共有3个答案

杜经艺
2023-03-14

对于那些好奇的人来说,这就是我使用的答案,它通过了所有的测试用例。

package com.google.challenges; 

public class Answer {   
    public static int answer(int x) { 

        int placeholder = 0, sum = 0;

        for(int i = 1; x > 0 ; i++){
            placeholder = x % (int)(Math.pow(10,i));
            x -= placeholder;
            sum += placeholder / (int)(Math.pow(10, i - 1));
            if (sum > 10 && x == 0){
                i = 0;
                x = sum;
                sum = 0;
                continue;
            }
            if (sum < 10 && x == 0){
            break;
            }
        }
    return((int)sum);
    }
}
赵正雅
2023-03-14

中找不到参数(int)的公共静态方法答案com.google.challenges.答案

尝试使用int作为方法参数。解决方案处理期望方法需要int参数。

正确的方法头:

公共静态int答案(int x)

上官思博
2023-03-14

它告诉您,它希望找到一个接受int参数的方法,但您已经声明了要接受long参数的方法。虽然可以将int传递给需要长的方法,但方法签名不同,因此找不到所需的签名。

public​ ​static​ ​int​ ​answer(long​ ​x)

应该是

public​ ​static​ ​int​ ​answer(int​ ​x)

编辑:根据评论中的讨论,这看起来像是测试用例中的错误,因为问题明确表示long并且答案预先填充了long参数

 类似资料:
  • CodingBat中的给定任务sameEnds: 给定一个字符串,返回出现在字符串开头和结尾且不重叠的最长子字符串。例如,sameEnds(“abXab”)是“ab”。 我的解决方案通过了所有测试,除了一个^: 这里有什么问题?我怎样才能修复它?

  • 给定CodingBat中的任务maxBlock: 给定一个字符串,返回字符串中最大“块”的长度。块是相同的相邻字符的运行。 我的解决方案通过了所有测试,除了一个:

  • 这个问题要求在键盘上键入字符串所需的总时间,用一个手指表示为二维字符矩阵。 输入: 第一行包含n和m作为输入,表示键盘矩阵的维数 接下来的n行包含m个字符,每个字符表示键盘中的字符 下一行将包含字符串S 输出: 说明:手指最初位于键盘的第一个符号,因此按下该键所需的时间为0。之后,新键位于1,1,因此总时间为|1-0||1-0|即2。现在第三个键位于位置1,2,因此移动到该键的总时间为|2-1||

  • 此代码未通过此标准的测试:给定一个字符串,计算以“y”或“z”结尾的单词数——因此“重”中的“y”和“fez”中的'z”计数,而不是“黄色”中的‘y’(不区分大小写)。如果一个单词后面没有一个字母,我们会说一个y或z在单词的末尾。(注意:Character.islet(char)测试char是否为字母。) 我用手跟踪它,但似乎不明白为什么它在许多测试中都不工作。例如,在“day fyyyz”中,它

  • 我在2020年8月16日发生的Google编码挑战赛中遇到了以下问题。我试图解决它,但没有成功。 字典中有N个单词,每个单词都是固定长度的,M只由小写英文字母组成,即('a',b',…,'z') 查询词由Q表示。查询词的长度为M。这些单词包含小写英文字母,但在某些地方不是字母介于“a”、“b”、…、'z’有'?' 。请参阅示例输入部分以了解这种情况 Q的匹配计数,由匹配计数(Q)表示,是字典中包含

  • 问题内容: 我有以下提供商列表(俄语): 这些显然是在unicode中。以前,要执行SQL SELECT,我正在做: 现在,由于列表项使用的是unicode,因此我遇到了。 我将如何正确执行此sql语句? 问题答案: 您不应该用来在sql查询中包含值。改用sql参数: 原始清单在哪里。 想法是使用与列表中提供者数量匹配的SQL参数语法,通过测试生成SQL查询:对于两个提供者的列表。是的,MySQL