Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从类中正确返回字符串?_Java_Class - Fatal编程技术网

Java 如何从类中正确返回字符串?

Java 如何从类中正确返回字符串?,java,class,Java,Class,在我的主要方法中,我有代码 String FactoredForm = FactoredForm.getFF(gcd1, gcd2, a, hii); 而FactoredForm类是: public class FactoredForm { public static String forName(int l, int o, int a, int hii) { // (lx+o)(mx+p String FF1, FF2; if (o > 0)

在我的主要方法中,我有代码

    String FactoredForm = FactoredForm.getFF(gcd1, gcd2, a, hii);
而FactoredForm类是:

public class FactoredForm {
public static String forName(int l, int o, int a, int hii) {
    // (lx+o)(mx+p      
    String FF1, FF2;
    if (o > 0){
        FF1 = ("(" + l + "x+" + o + ")");
    }
    else{
        FF1 = ("(" + l + "x" + o + ")");
    }
    if (hii/o > 0){
        FF2 = ("(" + a/l + "x+" + hii/o + ")");
    }
    else{
        FF2 = ("(" + a/l + "x" + hii/o + ")");
    }
    String FactoredForm = (FF1+FF2);


    return FactoredForm;
}
}

我得到一个错误,即类型字符串的getFF方法未定义。我遗漏了什么吗?

是的,您的方法被定义为forName,但您正在调用getFF

此外,您不想做:

String FactoredForm = (FF1+FF2);
FactoredForm是类的名称。只需将方法的最后两行替换为:

return FF1 + FF2;

是的,您的方法定义为forName,但您正在调用getFF

此外,您不想做:

String FactoredForm = (FF1+FF2);
FactoredForm是类的名称。只需将方法的最后两行替换为:

return FF1 + FF2;

字符串名称不能与类名相同。这就是导致错误的原因

字符串名称不能与类名相同。这就是导致错误的原因

您需要命名方法以匹配您正在进行的调用:

public class FactoredForm {
    public static String getFF(int l, int o, int a, int hii) {
    ...

您需要命名方法以匹配正在进行的调用:

public class FactoredForm {
    public static String getFF(int l, int o, int a, int hii) {
    ...
这里有两个错误:

在调用代码中,您正在声明一个与类同名的变量,因此当您在方法调用中使用相同的名称时,编译器认为您在谈论该变量。这并不是说你不能用这个名字来声明一个变量,只是在这一点上你必须要用你的方式来显式地引用这个类

您试图调用的方法不存在getFF而不存在forName

此外,将局部变量声明为与类同名会导致代码非常不可读。这没有错,只是个坏主意

您真正需要做的就是使用正确的方法名,并让编译器相信您所说的是类,而不是变量:

// Assuming FactoredForm is in the foo package
String FactoredForm = foo.FactoredForm.forName(gcd1, gcd2, a, hii);
。。。但是,例如使用更传统的变量名factoredForm将是一个非常好的主意。通常,变量是用Java封装的

如果FactoredForm在顶级软件包中,上述解决方案将不起作用,但我建议这也是另一种不好的做法。

这里有两个错误:

在调用代码中,您正在声明一个与类同名的变量,因此当您在方法调用中使用相同的名称时,编译器认为您在谈论该变量。这并不是说你不能用这个名字来声明一个变量,只是在这一点上你必须要用你的方式来显式地引用这个类

您试图调用的方法不存在getFF而不存在forName

此外,将局部变量声明为与类同名会导致代码非常不可读。这没有错,只是个坏主意

您真正需要做的就是使用正确的方法名,并让编译器相信您所说的是类,而不是变量:

// Assuming FactoredForm is in the foo package
String FactoredForm = foo.FactoredForm.forName(gcd1, gcd2, a, hii);
。。。但是,例如使用更传统的变量名factoredForm将是一个非常好的主意。通常,变量是用Java封装的


如果FactoredForm在顶级软件包中,上述解决方案将不起作用,但我建议这也是另一个糟糕的做法。

哎呀。我把它们都作为getFF,得到了相同的错误。我还遗漏了什么?@JesusSqueegee请看CodeBlue的答案。这个答案实际上并没有解决问题中显示的问题,即由于变量的名称,它正在字符串类中查找方法。哇。我把它们都作为getFF,得到了相同的错误。我还遗漏了什么?@JesusSqueegee请看CodeBlue的答案。这个答案实际上并没有解决问题中显示的问题,即由于变量的名称,它正在字符串类中查找方法。您完全可以给变量赋予与类相同的名称。然后,您只需要为编译器消除歧义。请参阅我的答案以获取一个示例。@JesusSqueegee:正如前面的评论中所提到的,这个答案实际上是不正确的。您完全可以将变量命名为与类相同的名称。你不应该,但是你可以。你完全可以给变量起和类相同的名字。然后,您只需要为编译器消除歧义。请参阅我的答案以获取一个示例。@JesusSqueegee:正如前面的评论中所提到的,这个答案实际上是不正确的。您完全可以将变量命名为与类相同的名称。你不应该,但你可以。事实上,现在我仔细观察,你的回答似乎是C,而这是一个Java问题。不会有太大的变化,但是global::需要作为FactoredForm的包,也许还需要一个指向Java命名约定的链接:事实上,现在我仔细看了一下,似乎您在回答C,而这是一个Java问题。虽然变化不大,但global::需要作为FactoredForm的包,可能还需要一个指向Java命名约定的链接: