如何求字符串变量中两个数字的和?

问题描述 投票:0回答:11

在此代码片段中,我无法对

a
b
求和:

String a = "10";
String b = "20"; 
JOptionPane.showMessageDialog(null,a+b);

由于

a
b
被定义为
String
,因此此代码将连接字符串并输出
10+20=1020

如何才能将

a
b
相加并输出
10+20=30

java
11个回答
8
投票

Java 提供了原始类型的解析方法。因此,根据您的输入,您可以使用 Integer.parseInt、Double.parseDouble 或其他。

String result;
try{
 int value = Integer.parseInt(a)+Integer.parseInt(b);
 result = String. valueOf(value) ;
}catch(NumberFormatException ex){
 //either a or b is not a number
 result = "Invalid input";
}
JOptionPane.showMessageDialog(null,result);

4
投票

因为你想连接字符串,所以它们不会相加。你必须将它们解析为一个整数,其工作原理如下:

Integer.parseInt(a) + Integer.parseInt(b)

总结一下 + 连接字符串而不是将它们相加。


3
投票

使用 BigInteger 类执行大长度字符串加法运算。

BigInteger big = new BigInteger("77777777777777777777888888888888888888888888888856666666666666666666666666666666");
        BigInteger big1 = new BigInteger("99999999999999995455555555555555556");
        BigInteger big3 =   big.add(big1);

1
投票

尝试:

Integer.parseInt(a)+Integer.parseInt(b)

 String a= txtnum1.getText();
 String b= txtnum2.getText(); 
 JOptionPane.showMessageDialog(null,Integer.parseInt(a)+Integer.parseInt(b));

1
投票

Integer.parseInt() 用于将 String 转换为 Integer。为了执行两个字符串的求和,首先需要将字符串转换为 Integers,然后需要执行求和,否则它只是连接两个字符串而不是执行求和。

字符串a =“10”; 字符串 b =“20”;

JOptionPane.showMessageDialog(null,Integer.parseInt(a)+Integer.parseInt(b));


1
投票
public String addTwoNumbers(final String n1, final String n2) {
    StringBuilder sb = new StringBuilder();
    int carry =0;
    byte[] nb1; byte[] nb2; 
    if (n1.length() > n2.length()){
        nb1 = n1.getBytes();
        nb2 = n2.getBytes();
    } else {
        nb2 = n1.getBytes();
        nb1 = n2.getBytes();
    }
      
    int maxLen=n1.length()>=n2.length()?n1.length():n2.length();
    for (int i = 1; i <= maxLen ; i++) {
        int a = nb1.length-i >= 0 ? nb1[nb1.length-i] - 48 : 0;
        int b = nb2.length-i >= 0 ? nb2[nb2.length-i] - 48 : 0;        
        int result = a + b + carry;
        
        if (result >= 10){
            carry = 1;
            result = result-10;
        } else {
            carry = 0;
        }
        sb.insert(0, result);
    }
    if(carry>0){
        sb.insert(0, carry);
    }
    return sb.toString();
}

0
投票
public void actionPerformed(ActionEvent arg0) 
{
    String a= txtnum1.getText(); 
    String b= txtnum2.getText(); 
    String result = "";
    try{
    int value = Integer.parseInt(a)+Integer.parseInt(b);
     result = ""+value;
    }catch(NumberFormatException ex){

     result = "Invalid input";
    }
    JOptionPane.showMessageDialog(null,result);



}

这是工作


0
投票

Integer 包装类具有构造函数,该构造函数采用表示数字的 String 参数。

String a= txtnum1.getText();//a="100"
String b= txtnum2.getText();//b="200" 

Integer result;
int result_1;
String result_2;

try{
result = new Integer(a) + new Integer(b); // here variables a and b are Strings representing numbers. If not numbers, then new Integer(String) will throw number format exception.

int result_1=result.intValue();//convert to primitive datatype int if required.

result_2 = ""+result;  //or result_2 = ""+result_1;  both will work to convert in String format

}catch(NumberFormatException ex){
//if either a or b are Strings not representing numbers
result_2 = "Invalid input";
}

0
投票

我们可以将字符串更改为 BigInteger,然后对其值求和。

import java.util.*;
import java.math.*;
class stack
{
    public static void main(String args[])
    {
        Scanner s=new Scanner(System.in); 
        String aa=s.next();
        String bb=s.next();
        BigInteger a=new BigInteger(aa);
        BigInteger b=new BigInteger(bb);
        System.out.println(a.add(b));
    }
}

0
投票

由于 + 用于连接字符串,因此不能使用它来添加两个包含数字的字符串。但减法对于这样的字符串来说效果非常好。因此,您可以使用这个基本的数学概念来实现这一点:

a-(-b)

0
投票
String a="3333311111111111";
String b="44422222221111";
String result;
try{
BigInteger value = BigInteger.valueOf(Long.parseLong(a)).add(BigInteger.valueOf(Long.parseLong(b)));
      result=value.toString();;
    }catch(NumberFormatException ex){
      result = "Invalid input";
    }
    System.out.println(result);
© www.soinside.com 2019 - 2024. All rights reserved.