valueOf()或parseInt()对我的代码不起作用

时间:2018-10-02 08:20:51

标签: java eclipse

我是Java的新手,我正在尝试创建一个返回数字的总和的方法,例如:input = 123->返回6。我正在使用String输入(因为在获得superDigit之前,还需要将String连接n次,所以我需要使用“ String to Integer(不是基本类型)”。

编译时错误:“方法superDigit类型的v​​alueOf(String,int)未定义

我在这里缺少图书馆吗?我需要制作自己的“ valueOf”方法吗?

console.log("Branch Name:" + $(this).closest(".container").find("input.branch_name").attr('id'));

4 个答案:

答案 0 :(得分:1)

您在这里有两个选择:

  1. 指定定义了valueOf的类(使用Integer.valueOf代替valueOf
  2. 使用静态导入:import static java.lang.Integer.valueOf;。在这种情况下,您可以在代码中使用valueOf

答案 1 :(得分:0)

代码尝试使用Integer类中的静态方法。编写呼叫有两种方法

  1. 通过在类中进行静态导入。
  2. 当您必须使用静态方法时,请使用类名.static方法进行调用。
  Integer包装器类中的

valueOf方法是静态的。

handleSubmit(e) {
    e.preventDefault();

    axios.post('/api/auth/login',this.state).then(response => {

        const token_id = response.data.access_token;


        localStorage.setItem('token', token_id);
        var get_token = localStorage.getItem('token');

        if(get_token === null)
        {   
            return <Redirect to='/login'  />
        }
        else
        {
            this.props.history.push('/hiflyer-dashboard');
        }

    }).catch((error) =>{
        if(error.response)
        {
            alert('Invalid');
        }
    })



}

答案 2 :(得分:0)

  

编译时错误:“方法superDigit类型的v​​alueOf(String,int)未定义

解释:由于方法名valueOf不受任何限制(例如变量名或类名),并且由于您尚未使用import static导入,因此编译器期望是您的superDigit类声明或继承的方法。但是您的类显然没有定义与预期签名匹配的方法。因此...编译错误。

  

我在这里缺少图书馆吗?我需要制作自己的“ valueOf”方法吗?

很难说。

根据您的使用方式,此valueOf方法需要从StringString生成int,但不知道如何使用结果应该产生。 (而且您的firstOutput方法同样是不透明的,尽管我们可以推断出它以某种方式产生了整数。)

鉴于我们不知道此valueOf应该做什么,我们无法确定是否存在可以导入该名称的现有方法,或者是否需要实现它为自己。我猜测后者。但是,在开始实施该代码之前,我认为您需要查看您编写的代码,并弄清valueOffirstOutput为了达到要求的目的需要做什么。


或者,尝试查看StringCharacter API(javadocjavadoc)中的方法。查看String::charAtCharacter::digit。您可以使用这些方法来构建解决方案吗?

答案 3 :(得分:0)

这是一个简单的程序,可以为您提供所需的输出:

public class App 
{
    public static void main( String[] args ){
        String answer = App.superDigit(123);
        System.out.println(answer);

    }

    public static String superDigit(int num) {
        String numString = String.valueOf(num);
        String[] numArray = numString.split("");
        int answer = 0;
        for(int x = 0; x < numArray.length; x++) {
          answer += Integer.parseInt(numArray[x]);
              }

        return String.valueOf(answer);

        }

} 

这是您的输出:

6

让我们讨论这个问题。您只是在调用静态方法“ valueOf”,而不是在使用valueOf方法调用Wrapper类或String类。您必须使用valueOf()方法调用一个类。在这种情况下,您需要在代码中调用Integer.valueOf()。但是,在我向您展示的示例中,我们称为String.valueOf()。但是,简单地调用valueOf()而不调用该方法的类将导致您提到的错误。其次,我们可以简单地在方法中输入一个参数(可以是您要使用的数字),而不用输入字符串。我们可以使用String.valueOf()方法将整数转换为String,然后将其拆分为数组。我们可以创建一个名为answer的Integer,并通过Integer.parseInt()方法将每个索引转换为Integer,从而在整个数组的每次迭代中将其添加到其中。最后,我们可以使用String.valueOf(answer);返回全格式的总和的String表示形式。线。