错误:找不到符号(方法)

时间:2017-11-08 07:28:56

标签: java

public void set (String s){                     
        int i = s.indexOf('x');
        int y = i;


        if(s.indexOf("=")>0 && s.indexOf("+")<s.indexOf("x") &&s.indexOf("-")<s.indexOf("x")){
            y = s.indexOf("+")+1;
        }

        else if(s.indexOf("=") > 0){                                        
            y = s.indexOf("=")+1;
        }
        else if(s.indexOf("+")<i){
            y = s.indexOf("+")+1;
        }
        else{
            y = 0;
        }                                                                   

        egimString = s.substring(y,i);
        egimString = egimString.replace(" ","");
        egim = egimString.toDouble();
    }

这是我的set方法。

private double toDouble(){
        int number = 0;
        int digit = 1;
        int n = 0;
        for (int i = egimString.length() ; i>0 ; i--){
            number = egimString.charAt(i-1) - '0';
            n = n+number*digit;
            digit = digit*10;
        }
        return (double)n;
    }

这是我的toDouble方法。我在使用toDouble方法时遇到错误:找不到符号错误。 这是有问题的方法。 egim = egimString.toDouble();

Dogru.java:52: error: cannot find symbol
        egim = egimString.toDouble();
                         ^
  symbol:   method toDouble()
  location: variable egimString of type String
1 error

这是完整的错误。

我的双重方法已经定义。我不知道为什么我会收到这个错误。他们都在同一个班级。

2 个答案:

答案 0 :(得分:0)

您的function UrlExists(url, cb){ jQuery.ajax({ url: url, dataType: 'text', type: 'GET', complete: function(xhr){ if(typeof cb === 'function') cb.apply(this, [xhr.status]); } }); } $.get('YOUR_URL_FILE.txt', function(data) { // here I assume your data is this format: // url1 // url2 // url3 var urls = data.split('\n'); urls.forEach(function(url) { UrlExists(url, function(status){ if(status === 200){ // file was found } else if(status === 404){ // 404 not found } }); }) }, 'text'); 变量类型为egimString,而String类没有String方法。所以你不能使用toDouble

如果您想使用egimString.toDouble(),则必须定义类似egimString.toDouble()的类,该类扩展MyStringClass类并将您的String方法放在toDouble类中。然后你应该像这样定义变量:

MyStringClass

可以使用这种逻辑。

答案 1 :(得分:0)

egimString的类型为java.lang.String,其中没有toDouble()。您的toDouble()无关。您应该为您的类定义一个变量。

实施例: 从你的代码中查看这一行

egimString = s.substring(y,i);

你调用方法substring(y,i),但你没有写一个。那么它定义在哪里?由于该方法与变量s相关,因此编译器会查看s的类型定义(它是java.lang.String)并尝试查找名为substring的方法。适当的签名(参数类型)。

与问题线相同。方法toDouble()与变量egimString相关,因此编译器会查找该变量的类型,并查找方法toDouble() 那里。要调用您的 toDouble(),等效值为this.toDouble()