子串无法找到它应该找到的内容

时间:2017-05-02 15:37:48

标签: java string substring

我有一个包含y = 3-2 + 4x-6的字符串(replacementLigning)。我希望xVærdi(一个ArrayList)包含x值。在示例y = 3-2 + 4x-6中,我希望xVærdi存储“4”,因为那是多少x'es。 xVærdi的初始值为none,问题是,substring无法找到“x”,因此xVærdi将不包含任何元素。或者我认为。

i初始化为1

OrderItemInlineAdmin

while(isNumber(replacedLigning.substring((replacedLigning.indexOf("x")-i),(replacedLigning.indexOf("x")-i+1))) == true){
    xVærdi.add(replacedLigning.substring((replacedLigning.indexOf("x")-i),(replacedLigning.indexOf("x")-i+1)));
    i++;
}

isNumber方法:

System.out.println(xVærdi); //It doesn't contain anything. Output: []

修改 我已经制作了一个迷你程序,如下所示。但是,在这个例子中没有出现错误,所以我不知道为什么会发生这种情况。所以我上传了我的程序的更大部分。我的输出是4,这是预期的,并且会发生。

public static boolean isNumber(String str)  {
        if((str.equals("-") && fortegn == false)){ 
            fortegn = true; //fortegn is a variable that allows the number to have it's minus with it
            return true;
        }
            else if (str.equals("+") || str.equals("*") || str.equals("/") || str.equals("=")){ 
                    return false;
        } else if((str.equals(".") && !fortegn) || (str.equals("0") && !fortegn) || (str.equals("1") && !fortegn) || (str.equals("2") && !fortegn) || (str.equals("3") && !fortegn) || (str.equals("4") && !fortegn) ||
                (str.equals("5") && !fortegn) || (str.equals("6") && !fortegn) || (str.equals("7") && !fortegn) || (str.equals("8") && !fortegn) || (str.equals("9") && !fortegn)){
            return true;
        } else 
            return false;
    }

不起作用的较长代码:

import java.util.*;
import java.lang.*;

public class Eksempel {

private static boolean fortegn = false;
private static int  i = 1;
static ArrayList xVærdi = new ArrayList();
private static String ligning = "y=3-2+4x-6";

    public static boolean erTal(String str)  {
        if((str.equals("-") && fortegn == false)){ //Variablen 'fortegn' sørger for at inkludere fortegnet af et tal, selvom det ikke er et tal. Dette sker kun en gang. 
            fortegn = true;
            return true;
        }
            else if (str.equals("+") || str.equals("*") || str.equals("/") || str.equals("=")){ 
                    return false;
        } else if((str.equals(".") && !fortegn) || (str.equals("0") && !fortegn) || (str.equals("1") && !fortegn) || (str.equals("2") && !fortegn) || (str.equals("3") && !fortegn) || (str.equals("4") && !fortegn) ||
                (str.equals("5") && !fortegn) || (str.equals("6") && !fortegn) || (str.equals("7") && !fortegn) || (str.equals("8") && !fortegn) || (str.equals("9") && !fortegn)){
            return true;
        } else //Kommer kun så langt hvis klienten har indtastet et bogstav andet end x. 
            return false;
    }
public static void main(String[] args) {

    while(erTal(ligning.substring((ligning.indexOf("x")-i),(ligning.indexOf("x")-i+1))) == true){
                        xVærdi.add(ligning.substring((ligning.indexOf("x")-i),(ligning.indexOf("x")-i+1)));
                        i++;
                    }

    Collections.reverse(xVærdi);
    double xResult = Double.parseDouble(String.join("", xVærdi));
    System.out.println(xResult); //returns 4.0 which it should
}}

0 个答案:

没有答案