Как преобразовать две строки в целые числа, поэтому математика правильная?

Мне нужен результат no: 5, но я не получаю: 23

public class Assignment3
{
  public static void main(String args[])
  {
    String str1 = "2";
    String str2 = "3";

  System.out.println("Result:" + (str1+str2) );
  }
}
+3
08 нояб. '10 в 7:16
источник поделиться
6 ответов

Если вы хотите, чтобы арифметика выполнялась с целыми числами, вам нужно указать вашему коду для анализа значений. В настоящее время он просто использует оператор конкатенации строк, поскольку оба операнда (str1 и str2) являются строковыми выражениями.

Попробуйте следующее:

public class Assignment3
{
  public static void main(String args[])
  {
    String str1 = "2";
    String str2 = "3";

    int num1 = Integer.parseInt(str1);
    int num2 = Integer.parseInt(str2);

    System.out.println("Result:" + (num1 + num2) );
  }
}

Обратите внимание, что когда вы используете "реальные" данные (вместо жестко заданных значений, которые определенно будут действительны здесь), Integer.parseInt будет бросать NumberFormatException, если вы дадите ему что-то вроде "x" вместо число.

+10
08 нояб. '10 в 7:19
источник

str1 и str2 являются объектами String. Операция + определена для объектов String и работает как конкатенация этих строк:

"one" + "two" -> "onetwo"
"1" + "2" -> "12"

Если вам нужна арифметическая операция +, вам нужны числовые типы (int, float,...). В этом случае вам нужно проанализировать строки для числовых значений, например:

String str1 = "2";
int int1 = Integer.parseInt(str1);  // int1 is now 2

public class Assignment3
{
  public static void main(String args[])
  {
    String str1 = "2";
    String str2 = "3";

    // `+` operation on Strings
    System.out.println("Concatenation:" + (str1+str2) );

    // `+` operation on integers
    System.out.println("Addition:" + (Integer.parseInt(str1)+Integer.parseInt(str2)) );
  }
}
+3
08 нояб. '10 в 7:22
источник

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

public class Assignment3
{
  public static void main(String args[])
  {
    String str1 = "2";
    String str2 = "3";

  System.out.println("Result:" + (Integer.parseInt(str1)+Integer.parseInt(str2)) );
  }
}
0
08 нояб. '10 в 7:24
источник

Вам нужно использовать parseInt(). Оператор "+" используется в Java для объединения двух строк, а также для добавления двух чисел. Поэтому вам нужно преобразовать строки в целое число, чтобы их можно было добавить с помощью оператора "+".

EDIT:

Существует также parseFloat() и parseDouble() если вы работаете с десятичными числами

0
08 нояб. '10 в 7:18
источник

Как насчет этого?

class Assignment3 
{ 
  public static void main(String args[]) 
  { 
    String str1 = "2"; 
    String str2 = "3"; 

    System.out.println("Result:" + (Integer.parseInt(str1)+Integer.parseInt(str2)) ); 
  } 
}
0
08 нояб. '10 в 7:19
источник

Посмотрите другие вопросы по меткам или Задайте вопрос