在Java中调用void子例程的变量

时间:2015-02-04 18:25:41

标签: java eclipse parameters void subroutine

这是我的第一个问题,谢谢你的帮助! (请原谅我所犯的任何语法错误,我还在学习英语)

我在2-3周前开始研究这种Java语言,所以这个问题对你来说可能很容易,但我不明白我的问题。我相信我在代码的某个地方犯了一个小错误,在网上论坛上花了很多时间思考和研究。 (也许这项研究并非无用,但我仍然无法独自解决这个问题。)/我正在使用Eclipse /

我的程序有4个子程序:

  1. public static void main():这是调用其他3个的地方。该程序的目的是要求用户提供有效的文件名,如果它存在,程序会读取它并逐行计算文件中的字符,数字等。
  2. static void shortAnalyze():用户可以在短分析和长分析之间做出决定,这只会显示文本中的整体字符数,所有数字,行数。
  3. static void detailedAnalyze():这与前一个非常类似,除了显示更多细节,如特殊字符数,最长字,最常用字母,元音和辅音,大写字母数等。(并且可能会创建一个新的空文本文件并生成一个日志)
  4. static void analyzeText():这是唯一计算的子程序,其他的函数只是写出信息。基本上,2个子程序shortAnalyze()和detailedAnalyze()是组合在一起的“数学方程”。
  5. 目前的代码还没有完成,但我可以毫无错误地运行它。我还使用了一个名为TextIO的Java类,我发现它比Scanner更容易使用。

    这是我实际问题的开始:

    static void analyzeText() {
    
            String   line;
            char     currChar    = ' ';
            int      nAll        = 0;          // nLetters    + nNumbers   + nOther    +nEmpty
            int      nCharacters = 0;          // nLetters    + nNumbers   + nOther
            int      nEmpty      = 0;          //                                       nEmpty
            int      nOther      = 0;          //                            nOther
            int      nNumbers    = 0;          //               nNumbers
            int      nLetters    = 0;          // nLetters
            int[]    uniqueChar  = new int[2048];
            boolean  readingFile = true;       // it is true, because analyzeText can be called only if fileName is valid
    
            while(readingFile){
                try {
    
                    line = TextIO.getln();
                    for (int i=0; i < line.length(); i++ ){
                            currChar = line.charAt(i);
                            if (currChar == ' '){
                                nEmpty++;
                                nAll++;
                            }
    
                    } //end of for
                } //end of try
                catch (IllegalArgumentException end_of_file) {
                    break;
                }
    
    
    
                } //end of analyzeText
           } //end of readingFile
    

    (请注意,有很多无用且无功能的东西和代码)

    这是我的子程序:

    static void shortAnalyze(){
    
               System.out.println();
    
           }
    

    我知道(或者我完全错了)虚空无法返回任何值。 我仍然想要这样的东西:

    static void shortAnalyze(){
    
               System.out.println(analyzeText.nAll);
    
           }
    

    static void shortAnalyze(){
    
               System.out.println(nAll);
    
           }
    

    所以我想将void analyzeText()中的变量调用到另一个名为shortAnalyze()的void中。 你认为这可能吗?你有什么建议给我,建议吗?

1 个答案:

答案 0 :(得分:0)

您可以将要在方法之间共享的变量声明为类的实例变量。只需在方法之外声明它们。
然后你可以使用:

static void shortAnalyze(){

           System.out.println(nAll);

       }