Как преобразовать две строки в целые числа, чтобы математика была правильной? - PullRequest
3 голосов
/ 08 ноября 2010

Я хочу получить результат № 5, но получаю №: 23

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

  System.out.println("Result:" + (str1+str2) );
  }
}

Ответы [ 6 ]

10 голосов
/ 08 ноября 2010

Если вы хотите, чтобы арифметика выполнялась на целых числах, вам нужно указать вашему коду, чтобы он анализировал значения.В настоящее время он просто использует оператор конкатенации строк, потому что оба операнда (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» вместо числа.

3 голосов
/ 08 ноября 2010

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)) );
  }
}
1 голос
/ 08 ноября 2010
0 голосов
/ 08 ноября 2010

Вы рассматриваете числовые строки как текстовые строки, но на самом деле вам нужно проанализировать строки в 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 ноября 2010

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

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 ноября 2010

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

РЕДАКТИРОВАТЬ:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...