当我尝试向Java中的数组添加整数时,我遇到了一个问题。任务来自CodeWars,它将取一个整数(例如12345)并将其作为整数的反向数组(例如{5、4、3、2、1})返回。
现在,我的代码编译并在eclipse上运行,即使未按预期返回数组,但我认为代码大战为此编辑了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
我在Google各处浏览过,但所有其他无法找到符号的问题都是拼写错误的类或方法调用。有任何想法吗?另外,作为Java初学者,如果您发现任何其他改进代码的方法,请告诉我。
谢谢
答案 0 :(得分:2)
因为Array
丢失,所以不知道import java.lang.reflect.Array
是什么。
但是实际上您根本不应该使用反射。 According to Oracle:
反射通常由需要检查或修改Java虚拟机中运行的应用程序的运行时行为的程序使用。这是一项相对高级的功能,只应由对语言基础有很深了解的开发人员使用。
您需要的是:
result[index] = temp;