2015-01-26 2 views
2

Я действительно новичок в Java, и я работал над проблемой, которая запрашивает у пользователя их дату рождения, затем берет вход, вычитает его из текущего года (ручной ввод на бэкэнд), а затем работает с указанным номером, чтобы сделать несколько вещей.Использование строковой переменной для математической функции в Java

Для первой математической части этого я пытался использовать строковую переменную в математической функции Java без каких-либо успехов.

В настоящее время мой код (в том числе небольшой части строки, для контекста):

// 2. a. Skip a line, then prompt the user for the year 
//   they were born. 
//  b. Calculate and print the age the user will be this year. 
//  c. Declare a constant for average life expectancy, 
//   set its value to 78.7. 
//  d. Print a message that tells the user the percentage 
//   of their expected life they've lived. 
//  Use the DecimalFormat class to format the percentage 

    //double age; 
    String year = JOptionPane.showInputDialog(null, "What year were you born?"); 
    String age = 2015 - year; 

Я также попытался эту последнюю строку как «возраст = 2015- год;»

Каков правильный способ получить это для компиляции? NetBeans продолжает снимать «неправильные типы операндов для двоичного оператора» - «ошибка»

Мой фон только от C, где сработало бы что-то похожее на это.

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

+1

Что-то похожее на это, безусловно, не будет работать в С. – immibis

ответ

1

Вы можете использовать функцию parseInt() сначала преобразовать String в int, выполняют математическую операцию (а), а затем преобразовать в intString.

Это всегда безопаснее преобразовать String в int/float для математических операций, так как некоторые математические операторы используются для конкретной операции в String, например: + используется для объединения строк по умолчанию в Java.

Код:

int _age = 2015 - Integer.parseInt(year); 
String age = String.valueOf(_age); 

Вы также можете сделать это в одной строке,

String age = String.valueOf(2015 - Integer.parseInt(year)); 
+0

Это устранило ошибку компиляции. Спасибо! – tictac472

+0

Если это вам помогло, скажите спасибо, нажав на этот серый тик ниже счетчика upvote-downvote, чтобы он стал зеленым! :) – shauryachats

+1

Сделано и сделано! Я немного новичок в пользовательской части stackoverflow, поэтому я все еще просматриваю вещи. :) – tictac472

0

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

int year = Integer.parseInt(JOptionPane.showInputDialog(null, "What year were you born?")); 
1

вам нужно сделать

String age=String.valueOf(2015-Integer.valueOf(year)); 

Символы «-» не работал для вас, потому что вы пытаетесь выполнить «-» на 2 строки объектов, но в отличие от C ява оленья кожа поддержки оператора перегрузки. По умолчанию для объектов String вы можете использовать только операцию «+» для конкатенации строк

удачи!

+0

Спасибо! Как ваше решение, так и Shaurya Chats 'удалили ошибку компиляции. Спасибо! – tictac472

0
String year = JOptionPane.showInputDialog(null, "What year were you born?"); 
int dob = Integer.parseInt(year); 
String age = Integer.toString(2015 - dob);