2015-08-15 2 views
0

Я пишу код, который извлекает первый начальный слова и превращает его в акроним.Java: проблемы с JOptionPane/сохранение вывода в переменную

Например, предложение random number gen ответ RNG.

У меня есть работа, но я пытаюсь показать результат в JOptionPane. Я не могу понять, как сохранить конечный результат (3 инициалы) для переменной, а затем показать ее в JOptionPane.

Есть ли способ сохранить вывод System.out.print в строковой переменной?

Я изначально пытался хранить System.out.print в переменной, но он дает мне ошибку void не может быть преобразован в строку.

Таким образом, я попытался сохранить буквы в переменной «инициалы», но он сохраняет только один (что имеет смысл). импорт javax.swing.JOptionPane;

public class ThreeLetterAcronym { 

    public static void main(String[] args) { 
     String answer; 
     String upperAnswer; 
     int number; 
     char letter; 
     String initial = ""; 

     answer = JOptionPane.showInputDialog(null, "Please enter three words?", "Input", JOptionPane.QUESTION_MESSAGE); 
     upperAnswer = answer.toUpperCase(); 
     upperAnswer = " " + upperAnswer; 
     number = upperAnswer.length(); 

     StringBuilder sb = new StringBuilder(); 

     for (int i = 0; i < number; i++) { 
      letter = upperAnswer.charAt(i); 
      if (letter == ' ') { 
       initial = Character.toString(upperAnswer.charAt(i + 1)); 
       sb.append(initial); 
       System.out.print(upperAnswer.charAt(i + 1)); 
      } 
     } 
     JOptionPane.showMessageDialog(null, sb.toString(), "Acronym", JOptionPane.INFORMATION_MESSAGE); 
    } 
} 

ответ

1

Вы используете initial в вашем диалоге вывода сообщений, который будет сбрасываться каждый раз, когда цикл продолжается и сохраняет последний. Итак, я сохранил его до StringBuilder. Вот рабочий код,

import javax.swing.JOptionPane; 

public class ThreeLetterAcronym { 

    public static void main(String[] args) { 
     String answer; 
     String upperAnswer; 
     int number; 
     char letter; 
     String initial = ""; 

     answer = JOptionPane.showInputDialog(null, "Please enter three words?", "Input", JOptionPane.QUESTION_MESSAGE); 
     upperAnswer = answer.toUpperCase(); 
     upperAnswer = " " + upperAnswer; 
     number = upperAnswer.length(); 

     StringBuilder sb = new StringBuilder(); 

     for (int i = 0; i < number; i++) { 
      letter = upperAnswer.charAt(i); 
      if (letter == ' ') { 
       initial = Character.toString(upperAnswer.charAt(i + 1)); 
       sb.append(initial); 
       System.out.print(upperAnswer.charAt(i + 1)); 
      } 
     } 
     JOptionPane.showMessageDialog(null, sb.toString(), "Acronym", JOptionPane.INFORMATION_MESSAGE); 
    } 
} 
+0

Я не думал об использовании StringBuilder. Спасибо. – BeginnerHelp

+0

Это решило мою проблему. – BeginnerHelp

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