【发布时间】:2018-07-16 17:27:36
【问题描述】:
当我尝试将整数添加到 Java 中的数组时,我遇到了一些问题。该任务来自 CodeWars,它需要一个整数,例如 12345,并将其作为整数的反转数组返回,例如 {5, 4, 3, 2, 1}。
现在,我的代码在 Eclipse 上编译并运行,即使数组没有按应有的方式返回,但我认为 code wars 有一个已编辑的 toString 类。
无论如何,这是我的代码:
package CodeWars;
import java.lang.reflect.Array;
public class Digitize
{
public static void main(String[] args)
{
System.out.println(digitize(472837428));
}
public static int[] digitize(long n)
{
String conv = Long.toString(n);
int[] result = new int[conv.length()];
for(int i = 0, index = conv.length(); i == conv.length(); i++, index--)
{
int temp = Character.getNumericValue(conv.charAt(i));
Array.setInt(result, index, temp);
}
return result;
}
}
并且由于某种原因代码大战不希望我们拥有主要方法,因此我粘贴了以下内容:
import java.util.*;
public class Kata
{
public static int[] digitize(long n)
{
String conv = Long.toString(n);
int[] result = new int[conv.length()];
for(int i = 0, index = conv.length(); i == conv.length(); i++, index--)
{
int temp = Character.getNumericValue(conv.charAt(i));
Array.setInt(result, index, temp);
}
return result;
}
}
然后该代码在此处以他们的检查方法运行:
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
public class DigitizeExampleTests {
@Test
public void tests() {
assertArrayEquals(new int[] {1, 3, 2, 5, 3}, Kata.digitize(35231));
}
}
所以当我在 CodeWars 中运行代码时,我会遇到这样的问题:
/workspace/java/src/Kata.java:12: error: cannot find symbol
Array.setInt(result, index, temp);
^
symbol: variable Array
location: class Kata
1 error
我查看了整个谷歌,但所有其他与找不到符号有关的问题都是拼写错误的类或方法调用。有任何想法吗?同样作为初学者 Java 学习者,如果您看到任何其他改进代码的方法,请告诉我。
谢谢
【问题讨论】:
-
您的
for循环条件错误(条件是何时继续,而不是何时停止),并且您的index是错的。在循环的第一次迭代中你会得到一个ArrayIndexOutOfBoundsException,除非循环由于条件错误而永远不会运行。另外,正如其他人所说,只需直接访问数组而无需反射。
标签: java arrays compiler-errors