Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将字符串解析为int并计算总和_Java_String_Parsing - Fatal编程技术网

Java:将字符串解析为int并计算总和

Java:将字符串解析为int并计算总和,java,string,parsing,Java,String,Parsing,首先,我想说,我不只是想找人给我这个问题的答案,我是一个初学者程序员,我只是想尽可能多地学习。如果您能对我的代码提出批评,并友好地向正确的方向推进,我们将不胜感激!真正让我困惑的是我的stringParser方法。我使用这个方法循环遍历字符串,挑出数字并将它们存储在一个新的字符串中进行解析。让我困惑的是,我如何才能将这些数字相加?代码如下: public static int stringParser(String parsee,int parsed) { int indexOfStri

首先,我想说,我不只是想找人给我这个问题的答案,我是一个初学者程序员,我只是想尽可能多地学习。如果您能对我的代码提出批评,并友好地向正确的方向推进,我们将不胜感激!真正让我困惑的是我的stringParser方法。我使用这个方法循环遍历字符串,挑出数字并将它们存储在一个新的字符串中进行解析。让我困惑的是,我如何才能将这些数字相加?代码如下:

public static int stringParser(String parsee,int parsed)
{
    int indexOfString = parsee.indexOf("=");            //Searches for an = sign since there has to be one  
    String parsee2 = "";
    int [] newArray;
    String subStringParse = parsee.substring(0,indexOfString);      //Substring made to divide string, this one is from 0 index to 1st occurence of = 
    for(int i = 0;i<subStringParse.length();i++)
    {
        if(Character.isDigit(subStringParse.charAt(i)))     //if the value is a number it is stored in a new string then parsed.
        {
            parsee2+= subStringParse.charAt(i);
            parsed = Integer.parseInt(parsee2);

        }           
    }           return parsed;

}
public static int sumInts(int a,int storedSums)
{   
    //a = new int[20];
    for(int i=0;i<a;i++)    //loops through parsed string from stringParser
    {
        storedSums += a;            //creates a new value calculating sum 
    }   
    return storedSums;
}
publicstaticintstringparser(stringparsee,intparsed)
{
int indexOfString=parsee.indexOf(“=”)//搜索=符号,因为必须有一个
字符串parse2=“”;
int[]新数组;
String subStringParse=parsee.substring(0,indexOfString);//用于分割字符串的子字符串,该子字符串从0索引到第一次出现的=

对于(inti=0;i,根据我的猜测,您需要解析类似于‘12+34=’的内容

如果我是对的,那么您的for循环是完全错误的。它将只返回34作为整数值。您可以为此调试代码

我建议你这样做:

int index = 0;
for(int i = 0;i<subStringParse.length();i++)
{
    if(Character.isDigit(subStringParse.charAt(i)))     //if the value is a number it is stored in a new string then parsed.
    {
        parsee2+= subStringParse.charAt(i);
        parsed = Integer.parseInt(parsee2);
    }           
    newArray[index++] = parsed; //make sure you initialize newArray.
}      
return newArray;
int索引=0;
对于(int i=0;iTry

输出


您可以提供一个示例输入字符串吗?感谢您的回复!示例用户输入字符串类似于:1+2=3+4=5+-6=。输出将是:SUM=3 SUM=7 SUM=-1。目标是计算每个“=”符号前的值的和。感谢您的回复!我实际上是在尝试使用数组,与您使用的方法相同,但我键入了它在parsed下面的if语句中,这可能会把它搞砸。如果您使用的是任何IDE,那么调试代码是发现错误的最佳选择。谢谢您的回答!我从未见过在for循环中使用过“:”,它是否与“;”具有相同的功能?它对每个循环的调用更详细
String parsee = "12+13 = 34+45 = 45+-45";
int value = 0;
String parsed = "";
for(String exp : parsee.split("=")){            
    for(String val : exp.trim().split("\\+")){
        value+=Integer.parseInt(val);
    }
    parsed+=" SUM = "+value;
    value = 0;
}
System.out.println(parsed);
 SUM = 25 SUM = 79 SUM = 0