在此代码片段中,我无法对
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 提供了原始类型的解析方法。因此,根据您的输入,您可以使用 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);
因为你想连接字符串,所以它们不会相加。你必须将它们解析为一个整数,其工作原理如下:
Integer.parseInt(a) + Integer.parseInt(b)
总结一下 + 连接字符串而不是将它们相加。
使用 BigInteger 类执行大长度字符串加法运算。
BigInteger big = new BigInteger("77777777777777777777888888888888888888888888888856666666666666666666666666666666");
BigInteger big1 = new BigInteger("99999999999999995455555555555555556");
BigInteger big3 = big.add(big1);
尝试:
Integer.parseInt(a)+Integer.parseInt(b)
String a= txtnum1.getText();
String b= txtnum2.getText();
JOptionPane.showMessageDialog(null,Integer.parseInt(a)+Integer.parseInt(b));
Integer.parseInt() 用于将 String 转换为 Integer。为了执行两个字符串的求和,首先需要将字符串转换为 Integers,然后需要执行求和,否则它只是连接两个字符串而不是执行求和。
字符串a =“10”; 字符串 b =“20”;
JOptionPane.showMessageDialog(null,Integer.parseInt(a)+Integer.parseInt(b));
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();
}
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);
}
这是工作
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";
}
我们可以将字符串更改为 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));
}
}
由于 + 用于连接字符串,因此不能使用它来添加两个包含数字的字符串。但减法对于这样的字符串来说效果非常好。因此,您可以使用这个基本的数学概念来实现这一点:
a-(-b)
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);