2015-02-04 4 views
0

Это мой первый вопрос здесь, спасибо за вашу помощь! (Пожалуйста, извините за любые грамматические ошибки, которые я делаю, я все еще изучаю английский)Вызов переменных подпрограммы void в Java

Я начал изучать этот язык Java около 2-3 недель назад, поэтому этот вопрос, вероятно, будет довольно легким для вас, но я не знаю, Не понимаю мою проблему. Я считаю, что я немного ошибся в своем коде, потеряв много часов, размышляя и исследуя онлайн-форумы. (Может быть, исследование не было бесполезно, но я до сих пор не могут решить эту проблему в одиночку, самостоятельно.)/Я использую Eclipse,/

Моя программа имеет 4 подпрограммы:

  1. государственной статической силы основных(): Здесь вызывается 3 других. Цель программы - запросить у пользователя допустимое имя файла, если оно существует, программа считывает его и подсчитывает символы, числа и т. Д. Внутри файла, последовательно за строкой.
  2. static void shortAnalyze(): Пользователь может выбирать между коротким и длинным анализом, это отображает только общий счетчик символов в тексте, все числа, количество строк.
  3. static void detailAnalyze(): Это очень похоже на предыдущее, за исключением отображает намного больше деталей, таких как количество специальных символов, самое длинное слово, наиболее используемые буквы, гласные и согласные, количество заглавных букв и т. Д. (и, возможно, создать новый пустой текстовый файл и сделать журнал)
  4. static void analysisText(): Это единственная подпрограмма, которая вычисляет, функция других состоит только в том, чтобы выписывать информацию. В основном, 2 подпрограммы, shortAnalyze() и detailAnalyze() - это «математические уравнения», сгруппированные вместе.

Текущий код еще не завершен, но я могу запустить его без ошибок. Я также использовал класс Java с именем TextIO, с которым мне легче работать, чем сканер.

Это где начинается моя актуальная проблема:

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); 

     } 

Так что я хочу, чтобы вызвать переменную из пустого analyzeText() в другую пустоту, называемую shortAnalyze(). Как вы думаете, это возможно? У вас есть какие-то советы для меня, предложения?

+1

Добавить параметр в ваш метод shortAnalyze, если вы хотите использовать там. – ControlAltDel

+0

Здравствуйте, ControlAltDel, благодарю вас за ответ. Извините, я немного смущен.Если бы я добавил параметр к моему методу, он перестанет быть пустотой? И это означает, что мне нужно вернуть значение, но я хочу только написать «nAll», я не хочу изменять его значение, возвращать его и использовать в другом месте. Мне стыдно, но я вас не понимаю, извините. – Hydraxia

ответ

0

Вы можете объявить переменные, которые вы хотите разделить между методами, в качестве переменной экземпляра класса. Просто объявите их вне метода.
Затем вы можете использовать:

static void shortAnalyze(){ 

      System.out.println(nAll); 

     } 
+0

Спасибо, GobletSky, это действительно помогло! Я создал переменную '' static int nAll ''; И я также заметил, что при создании '' public static int nAll '' я могу достичь '' nAll '' везде в моем пакете, вы решили 2 из моих проблем с 1 ответом! Еще раз спасибо, сэр! – Hydraxia

+0

Добро пожаловать. Хотя я рекомендую вам тщательно подумать, хотите ли вы использовать переменные экземпляра или локальные переменные. Ответьте на этот вопрос: http://stackoverflow.com/a/4588772/1559914 – User31689

Смежные вопросы