2015-04-12 3 views
0
private JTextField resultTextField; 
resultTextField.setText(" "); ... 

private class InputListener implements ActionListener 
{ 
    public void actionPerformed(ActionEvent e) 
    { 
     Stack<Integer> operandStack = new Stack<Integer>(); 
     Stack<Character> operatorStack = new Stack<Character>(); 

     String input = inputTextField.getText(); 

     StringTokenizer strToken = new StringTokenizer(input, " ", false); 


     while (strToken.hasMoreTokens()) 
     { 
      String i = strToken.nextToken(); 
      int operand; 
      char operator; 

      try 
      { 
       operand = Integer.parseInt(i); 
       operandStack.push(operand); 
      } 
      catch (NumberFormatException nfe) 
      { 
       operator = i.charAt(0); 
       operatorStack.push(operator); 
      } 
     } 
     int result = sum (operandStack, operatorStack); 
     resultTextField.setText(result); 

Последняя строка, которая гласит: «resultTextField.setText (result);» в представленном коде, я пытаюсь преобразовать переменную «result» в String, но не имеет успеха. Сообщение об ошибке при компиляции я получаю:Преобразование int в строку

PrefixExpression.java:96: error: method setText in class JTextComponent cannot be applied to given types; 
      resultTextField.setText(result); 
         ^
    required: String 
    found: int 
    reason: actual argument int cannot be converted to String by method invocation conversion. 

Я пробовал несколько методов, которые уже предусмотрены в ответах на другие «новообращенного междунар в строку» вопросов здесь, но ни один из них не работает. Как преобразовать «результат» в строку? Спасибо за вашу помощь.

+0

Покажите нам методы, которые вы пробовали и то, что проблема с ними была. – RealSkeptic

+0

В чем проблема с 'Integer.toString (result)' – silentprogrammer

+0

@singhakash 'result' является' int', а не 'Integer'. – RealSkeptic

ответ

4

Это будет преобразовывать Int в строку:

resultTextField.setText(Integer.toString(result)); 

EDIT: Как упомянуто ниже нет необходимости импортировать java.lang как это будут доступны всегда.

+2

Вам никогда не нужно импортировать библиотеку 'java.lang. *' , – RealSkeptic

+0

Я отредактирую свой ответ, чтобы удалить импорт. – druidicwyrm

1

Просто выполните это: (new Integer(result)).toString(), и все должно быть в порядке.

+2

Не будет 'Integer.toString (result)' быть более аккуратным? –

+0

@BoristheSpider Да, конечно. –

+0

Помимо аккуратного, он создаст еще один объект. – RealSkeptic

2

Вы могли бы сделать хак

resultTextField.setText(result + ""); 
+0

Moishe, спасибо, это сработало! YAHOOOOOOO! – Jeremy

+0

На самом деле, @ Джереми, это считается плохой практикой. – RealSkeptic

+0

@RealSkeptic RealSkeptic, что считается плохой практикой, код, который предоставил Мойше Липскер, или мои комментарии к нему или ей? – Jeremy

3

Вы можете использовать функцию Integer.toString (number) или String.valueOf (number). Эта функция может принимать целое число и превращать его в строку. Попробуйте добавить:

String numResult = Integer.toString(result); 

или

String numResult = String.valueOf(result); 
+0

Я изменил сообщение. – MLavrentyev