【问题标题】:Java: cannot find symbol (Array class)Java:找不到符号(数组类)
【发布时间】: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


【解决方案1】:

它不知道Array 是什么,因为缺少import java.lang.reflect.Array

但实际上你根本不应该使用反射。 According to Oracle:

反射通常由需要能够检查或修改在 Java 虚拟机中运行的应用程序的运行时行为的程序使用。这是一个相对高级的功能,只应由对语言基础知识有深入了解的开发人员使用。

你只需要:

result[index] = temp;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    相关资源
    最近更新 更多