java,用string类型进行十进制加法计算

问题描述

java,用string类型进行十进制加法计算

这是n1,n2长度相同的时候的算法,求改进长度不同的时候又要进位时候的编写方法。如1998+2=2000。
我java初学,请多多指教。

    private String addNumericStrings(String n1, String n2) {
        String result=new String("");
        String A=new String("");
        int v1=0;
        char ch3=n1.charAt(0);
        char ch4=n2.charAt(0);
        int c=ch3-'0';
        int d=ch4-'0';
        int a=n1.length()-1;
        int b=n2.length()-1;
        if(a==b){
            while(a>=0&&b>=0){
                char ch1=n1.charAt(a);
                char ch2=n2.charAt(b);
                v1=v1+ch1-'0';
                int v2=ch2-'0';
                int v3=v1+v2;
                if(v3>=10){
                    A=String.valueOf(v3-10);v1=1;
                }
                else {
                    A=String.valueOf(v3);v1=0;
                }
                result=A+result;
                a--;b--;
                }
            if((c+d)>=10){
                    result="1"+result;
            }
        }

解决方案

如果是找个计算表达式,去看看后缀表达式算法

解决方案二:

不是找计算表达式,这是作业,就是让用string进行加法计算

解决方案三:

根据你的算法差不多改的

 public static int getChar(String n1,int pos){
        int a=0;
        char c_a;
        if(pos<n1.length()){
            c_a = n1.charAt(n1.length()-pos-1);
            a = c_a-'0';//实际上这一步就不叫字符串加减了,顶多算模拟位数相加
        }
        return a;
    }
    public static String addNumericStrings(String n1,String n2){
        String result = "";
        String A = "";
        int len = n1.length()>n2.length()?n1.length():n2.length();
        int a,b;
        int flag = 0;
        char c_a,c_b;
        for(int i=0;i<len;i++){
            a=getChar(n1,i);
            b=getChar(n2,i);
            int v3=flag+a+b;
            if(v3>=10){
                A=String.valueOf(v3-10);
                flag=1;
            }else{
                A=String.valueOf(v3);
                flag = 0;
            }
            result=A+result;
        }
        return result;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        String k = addNumericStrings("2986","14");
        System.out.println(k);
    }
时间: 2024-09-22 07:29:54

java,用string类型进行十进制加法计算的相关文章

字符-jdk1.5 String类型的表达式 计算结果转换成Int

问题描述 jdk1.5 String类型的表达式 计算结果转换成Int String str = "3*5+5"; JDK1.5 有没有什么函数可以计算str然后放入int? 还是得字符截取一步一步来? 感谢各位大神的回复.不能全部采纳实属无奈.所以从逻辑严谨的角度,采纳同时回答两个问题的回复.再次感谢 解决方案 没有,自己看一下后缀表达式算法,参考下面链接http://www.cnblogs.com/gmq/archive/2013/05/30/3108849.html 解决方案二:

string-关于java中String类型参数传递的问题,谁能给我讲清楚

问题描述 关于java中String类型参数传递的问题,谁能给我讲清楚 我知道java里面参数传递是值传递,这点不用给我解释了.但是: import java.util.*; public class Test { public static void change(String s){ s="2"; } public static void main(String[] args) throws Exception{ String s="1"; change(s);

string-关于java中String类型汉字字符串的升序问题

问题描述 关于java中String类型汉字字符串的升序问题 本人新手,遇到一个项目问题:有若干个对象,每个对象里面都有一个String类型的姓名属性,现在要求根据姓名属性的升序将这些对象排列在List集合里,问如何将String类型的汉字升序排列.求大神 解决方案 String[] strs = {""张三(Z)""李四(L)""王五(W)""}; // 定义一个中文排序器 Comparator c = Collator.g

数字-Java打印String类型的问题

问题描述 Java打印String类型的问题 代码是这样的: System.out.println( "我的的兑换码为:" + DigestUtils.shaHex("001")); 这是一个加密的,内容必须是String类型,但是我需要批量打印,而且是int类型的自增,如: 001,002,003到010,这样的一系列的数字的加密,求支招 解决方案 public static void main(String[] args){ String pattern=&qu

Java中String类型能转成int类型吗

问题描述 Java中String类型能转成int类型吗 一个String字符串 能否像 char类型一样 转换成int值 如果可以Java中怎么写 解决方案 看你用什么预言,各种预言都有转换函数,只要符合数值型,就可以正常转换 解决方案二: double?d?=?1.233; String?s1?=?String.valueOf(d); String?s2?=?s1.substring(0,?s1.indexOf("."))?+?s1.substring(s1.indexOf(&quo

简单谈谈Java中String类型的参数传递问题_java

提要:本文从实现原理的角度上阐述和剖析了:在Java语言中,以 String 作为类型的变量在作为方法参数时所表现出的"非对象"的特性. 一.最开始的示例 写代码最重要的就是实践,不经过反复试验而得出的说辞只能说是凭空遐想罢了.所以,在本文中首先以一个简单示例来抛出核心话题: public class StringAsParamOfMethodDemo { public static void main(String[] args) { StringAsParamOfMethodDem

java中string 类型的对象间比较的学习笔记

在JAVA 中String 有两种不同的赋值方式 ,"="和new一个新的对象,虽然在输出时显示的内容是一样的,但数据存储的原理是不同的. String a="ab"; String b="ab"; System.out.println(a==b);//true 三句话的执行时这样的:        当把"ab"赋值给a变量时,因为是用"="直接赋值,此时"ab"作为字面量存在栈中,然后

java date String 类型相互转换

这种转换要用到java.text.SimpleDateFormat类 字符串转换成日期类型: 方法1: 也是最简单的方法 Date date=new Date("2008-04-14"); 方法2: SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");//小写的mm表示的是分钟 String dstr="2008-4-24"; java.util.Date date=sdf.parse(

Java中String类型的不可变性和驻留池

  一 基本概念 可变类和不可变类(Mutable and Immutable Objects)的初步定义: 可变类:当获得这个类的一个实例引用时,可以改变这个实例的内容. 不可变类:不可变类的实例一但创建,其内在成员变量的值就不能被修改.其中String类就是不可变类的经典应用.   二 例子 package cn.xy.test; public class StringTest {  /**   * a的值在编译时就被确定下来,故其值"xy"被放入String的驻留池(驻留池在堆中