JAVA - как мне продолжать добавлять ценность

1

У меня есть эта кнопка и текстовое поле, и я хотел добавить значение к переменной, когда нажимается кнопка, все работает отдельно от того, что я не могу добавить значение к строковой переменной

Например, если я ставлю значение 20 в строку tempvalue, у него должно быть 20, а я ставлю 30, то должно быть 50, но я получаю null2050.
Я пробовал + = оператор, который не работал.

Не существует ли какой-либо оператор, который продолжает добавлять значение поверх него или мне нужно написать новый метод?

private String tempvalue;

btnEnter.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String getTxt = textField.getText();
        tempvalue += getTxt;

        System.out.println(tempvalue);

    }
});
  • 3
    Вы показываете слишком мало кода для нас, чтобы увидеть, что происходит не так. Что такое "tempValue"? Что такое "gtTxt"? Они объявлены, они инициализированы? Есть ли у них значение, к которому они относятся?
  • 0
    позвольте мне отредактировать мой код
Показать ещё 1 комментарий
Теги:

3 ответа

4
Лучший ответ

Вы получаете строки из текстовых полей.

String input = getTxt;

Вы должны проанализировать строку с целым числом или любым другим типом номера.

int value = Integer.parseInt(input);

Затем вы можете делать вычисления.

Вы также должны всегда проверять, действительно ли пользовательский ввод является числом. Используйте try/catch, чтобы избежать неправильного ввода:

int value = 0;
int firstValue = 5; //example variable
try{
    value = Integer.parseInt(input);
}catch(Exception e1){
    System.out.println("Your input could not be parsed to a number");
}
int result = firstValue + value; //always be sure all your values are numbers and not strings
System.out.println("Result: "+result);

В итоге:

private int tempvalue = 0;

btnEnter.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String getTxt = textField.getText();
        int value = 0;

        try{
            value = Integer.parseInt(getTxt);
        }catch(Exception e1){
            System.out.println("Your input could not be parsed to a number");
        }

        tempvalue += value;

        System.out.println("Result: "+tempvalue);

        }
    });
}
  • 0
    Спасибо, я попробую ваш метод. Я привык к Visual Basic, и теперь я должен изучать Java, который отличается от меня, поэтому я борюсь с Java ATM T_T.
  • 0
    Я не вижу, где firstValue объявляется
Показать ещё 3 комментария
1

Вы просто объединяете свои струны. На самом деле вы начинаете с null тогда вы добавляете 20 но как String, а затем 30 но всегда как String. Преобразуйте на каждом шаге число, а затем сделайте свой результат.

1

Как комментирует @Jesper, код объединяет строки и не применяет вычисления, такие как сумма, вычитание и сын...

Итак, попробуйте изменить код для преобразования из java.lang.String в java.langInteger


Integer tempValue += new Integer( getText );
System.out.println( tempvalue ); 

или используя статический метод из класса wrapper Integer

Integer tempValue += Integer.parseInt( getText );
System.out.println( tempvalue );

или затем с использованием типа int Java (автоматически с автоматическим полем)

int tempValue += Integer.parseInt( getText ).intValue();
System.out.println( tempvalue );

Будьте осторожны с целыми целыми преобразованиями. Это может привести к возникновению исключения NumberFormatException во время выполнения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню