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

Call a void subroutine's variables in Java

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

我大约在 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() 'mathematical equations' 组合在一起。

当前代码尚未完成,但我可以 运行 它没有错误。我还使用了一个名为 TextIO 的 Java class,我发现它比 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();

       }

我知道(或者我完全错了)void 不能 return 任何值。 我仍然想要类似的东西:

static void shortAnalyze(){

           System.out.println(analyzeText.nAll);

       }

static void shortAnalyze(){

           System.out.println(nAll);

       }

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

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

static void shortAnalyze(){

           System.out.println(nAll);

       }