我有一个包含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
}}