【问题标题】:Call String from one method to another in Java在Java中从一种方法调用String到另一种方法
【发布时间】:2011-07-05 02:43:39
【问题描述】:

对不起,如果这是一个简单的问题,但我已经尝试了很长时间,现在是否可以从一种方法调用字符串到另一种方法...

下面我想从方法fileName调用字符串fileNamefileOutputToFile。我知道我可以把它传进去,但我想从fileOutputToFile 调用它。

public class outputToFile {

    public void fileName(){

         String fileName = "Test";

    }

    public void fileOutputToFile(String hex) throws Exception{

        String fileInfo = hex;

        try {
                PrintWriter out = new PrintWriter(new BufferedWriter(
                                         new FileWriter("myfile.txt", true)));
                out.print(fileInfo);
                out.print("\n");
                out.close();
            }catch (IOException e){
            }
    }
}

【问题讨论】:

  • 请澄清一下,你又想做什么?

标签: java string methods call


【解决方案1】:

不可能调用另一个方法中的局部变量——这是范围问题。

因此,无法通过fileOutputToFile 方法从fileName() 方法检索fileName 变量。

当调用fileName 方法时,“检索”文件名的一种方法是return 文件名:

public String getFileName(){
     String fileName = "Test";
     return fileName;
}

(注意:我冒昧地将方法重命名为更接近 Java 中命名标识符的约定。)

然后,在fileOutputToFile方法中,可以调用getFileName方法获取fileName的值。


应该注意的是,在这种情况下,实际上最好只使用字段(实例或类变量)而不是调用单独的方法来检索文件名。考虑到该方法只是返回一个常量String,一个字段可以保存该值:

public class OutputToFile {
    // Here, we use a class variable.
    private static final String FILE_NAME = "Test";

    public void fileOutputToFile(String hex) {
        // use FILE_NAME field here.
    }
}

【讨论】:

    【解决方案2】:

    所有变量的范围通常仅限于它们所在的 {} 外壳。因此,如果您在一种方法中创建变量,则除非您将其传入,否则无法在另一种方法中访问它。

    好消息是您可以创建由类中的所有方法共享的类级别变量!

    public class OutputToFile {
    
        private String fileName = "Test";
    
        public void fileName() {
               System.out.println(fileName);
               fileName = "Something Different"
        }
    
        public void fileOutputToFile(String hex) {
               System.out.println(fileName);
               // Do other things with it
        }
    }
    

    【讨论】:

      【解决方案3】:

      如果我理解正确,您希望从 fileName()返回一个字符串。

      目前,您的 fileName() 实现什么都不做。必须添加return语句才能返回值:'return "Test"'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-10
        • 2020-06-18
        • 2017-10-30
        • 2012-03-22
        • 2014-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多