繁体   English   中英

如何将字符串拆分为整数,符号和字符串,然后存储整数值以用于算术运算

[英]How can i split a string into integers, symbols and strings, and then store the integer values to use for arithmetic operation

我是新来的和java,请我尝试将一个字符串拆分为整数,符号和字符串。 我想存储整数并将它们用于算术运算。 每次我尝试将split(数字)字符串转换为整数时,我都会收到错误(NumberFormatException)。

package com.company;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    static ArrayList<Integer> numbers;
    static String numInt;
    static StringBuffer buffer;

    static void splitString(String str){
        StringBuffer alpha = new StringBuffer(), num = new StringBuffer(), special = new StringBuffer();
        String numS = "";   String nume = "";

        for(int i=0; i<str.length(); i++) {
            if(Character.isDigit(str.charAt(i))) {
                nume = numS + str.charAt(i);
            } else if(Character.isAlphabetic(str.charAt(i))) {
                alpha.append(str.charAt(i));
            } else {
                special.append(str.charAt(i));
            }
        }

        System.out.println(alpha);
        System.out.println(special);
        int numInt = Integer.parseInt(nume.trim());

        int numIntr = numInt + 47;
        System.out.println(numIntr);
    }


    public static void main(String[] args) {
        String str = "thissois8uy293849i0000r";
        splitString(str);`enter code here`
    }
}

您似乎遇到了问题,首先您的号码不会增加。 nume = numS + str.charAt(i); 需要是nume = nume + str.charAt(i); 所以它为字符串添加了数字。

第二个问题是你的榜样,你结束了一个价值82938490000大于Integer.MAX_VALUE (2,147,483,647)不能被存储在int 如果你改变它很long它会工作正常。

    long numInt = Long.parseLong(nume.trim());

    long numIntr = numInt + 47;

您可能需要考虑使用BigInteger来处理更大的值。

    BigInteger numInt = new BigInteger(nume.trim());

    BigInteger numIntr = numInt.add(BigInteger.valueOf(47));

这个问题有关于整数最大值的更多信息

有一些问题需要解决:

  1. 以下行无法按预期工作:

     if(Character.isDigit(str.charAt(i))) { nume = numS + str.charAt(i); } 

    因为你在每次迭代中都会覆盖nume的值。

  2. 由于用户@DCTID已经回答你使用int来保存大的数值。 所以请使用long (或者更好的BigInteger )。

以下是您在编写Java splitString修改的splitString方法代码:

static void splitString(String str) {
    StringBuffer alpha = new StringBuffer();
    StringBuffer num = new StringBuffer();
    StringBuffer special = new StringBuffer();

    for (int i = 0; i < str.length(); i++) {
        if (Character.isDigit(str.charAt(i))) {
            num.append(str.charAt(i));
        } else if (Character.isAlphabetic(str.charAt(i))) {
            alpha.append(str.charAt(i));
        } else {
            special.append(str.charAt(i));
        }
    }

    long numInt = Long.parseLong(num.toString().trim()) + 47L;

    System.out.println("Number: " + numIntr);
    System.out.println("Characters: " + alpha);
    System.out.println("Special chars: " + special);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM