在 Java 中调用 void 子程序的变量
Call a void subroutine's variables in Java
这是我的第一个问题,感谢您的帮助! (请原谅我犯的任何语法错误,我还在学习英语)
我大约在 2-3 周前开始学习这种 Java 语言,所以这个问题对你来说可能很简单,但我不明白我的问题。我相信我在我的代码中的某个地方犯了一个小错误,浪费了很多时间思考和研究在线论坛。 (也许研究并非毫无用处,但我仍然无法独自解决这个问题。)/我正在使用 Eclipse/
我的程序有 4 个子程序:
- public static void main():这是调用其他 3 个的地方。该程序的目的是向用户询问一个有效的文件名,如果它存在,程序将读取它并逐行计算文件中的字符、数字等。
- static void shortAnalyze(): 用户可以决定是短分析还是长分析,这只会显示文本中的总字符数、所有数字、行数。
- static void detailedAnalyze():这与上一个非常相似,除了显示更多细节,如特殊字符数、最长单词、最常用的字母、元音和辅音、大写字母的数量等.(并可能创建一个新的空文本文件并制作日志)
- 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);
}
这是我的第一个问题,感谢您的帮助! (请原谅我犯的任何语法错误,我还在学习英语)
我大约在 2-3 周前开始学习这种 Java 语言,所以这个问题对你来说可能很简单,但我不明白我的问题。我相信我在我的代码中的某个地方犯了一个小错误,浪费了很多时间思考和研究在线论坛。 (也许研究并非毫无用处,但我仍然无法独自解决这个问题。)/我正在使用 Eclipse/
我的程序有 4 个子程序:
- public static void main():这是调用其他 3 个的地方。该程序的目的是向用户询问一个有效的文件名,如果它存在,程序将读取它并逐行计算文件中的字符、数字等。
- static void shortAnalyze(): 用户可以决定是短分析还是长分析,这只会显示文本中的总字符数、所有数字、行数。
- static void detailedAnalyze():这与上一个非常相似,除了显示更多细节,如特殊字符数、最长单词、最常用的字母、元音和辅音、大写字母的数量等.(并可能创建一个新的空文本文件并制作日志)
- 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);
}