2016-11-07 55 views
-1

我正在研究一個線性系統求解器,我希望用戶能夠一次輸入整個方程來反對分別輸入每個數字。如何拆分2部分的字符串?

我試圖在「+」和「=」(方程式格式是(ax + by = c))上拆分字符串,但它將加號後的第二部分拆分爲「by = c」不僅僅是「通過」。

這裏是我的代碼:

System.out.print("Enter Your First Equation (ax + by = c): "); 
String eq1 = sc.nextLine(); 

String[] part = eq1.split("\\+"); 
String[] part2 = eq1.split("\\="); 

String result = part[0]; 

String result2 = part[1]; 

String result3 = part2[1]; 


double a1 = Double.parseDouble(result); 
double b1 = Double.parseDouble(result2); 
double c1 = Double.parseDouble(result3); 

System.out.print("Enter Your Second Equation (ax + by = c): "); 
String eq2 = sc.nextLine(); 

String[] part3 = eq1.split("\\+"); 
String[] part4 = eq1.split("\\="); 

String result4 = part3[0]; 

String result5 = part3[1]; 

String result6 = part4[1]; 

double a2 = Double.parseDouble(result4); 
double b2 = Double.parseDouble(result5); 
double c2 = Double.parseDouble(result6); 


System.out.println("Your Equations Are (1) " + a1 + "x + " + b1 + "y = " + c1); 
System.out.println("     (2) " + a2 + "x + " + b2 + "y = " + c2); 
+1

[Java:use split()with multiple delimiters](http:// stackoverflow.com/questions/5993779/java-use-split-with-multiple-delimiters) – nbrooks

+0

當您不關心分隔符的確切形式時,'split'可以根據分隔符分割字符串。在這裏,你很在乎,因爲我假設你會不同地對待'+'和'='。使用一個循環,你用正則表達式從字符串中解析下一個記號會更好。 「split」可能不是這份工作的正確工具。 – ajb

+0

但是,如果在'='右邊沒有任何操作符,那麼您可以通過在'='_first_上分割'拆分',然後拆分_only第一個元素_(左邊的部分''''在'+'上。但我必須問:你打算如何處理負面係數?我們是否必須輸入'2x + -3y = 7'?呸。 – ajb

回答

1

String.split不會給你想要的結果,這是我的猜測是「斧頭」,「靠」,因爲它必須尋找一個令牌拆分並拆除該令牌。使用此正則表達式:(\ d *)([a-zA-Z] +)|(\ d +)來嘗試模式和匹配器。

如:

public static void main(String[] args) { 

     String exp = "53x+6y=30"; 

     String pattern = "(\\d*)([a-zA-Z]+)|(\\d+)"; 

     // Create a Pattern object 
      Pattern r = Pattern.compile(pattern); 

      // Now create matcher object. 
      Matcher m = r.matcher(exp); 

      while (m.find()) { 
      System.out.println("Found value: " + m.group(0)); 
      } 
    } 

輸出 -

Found value: 53x 
Found value: 6y 
Found value: 30 
0

如果您堅持使用String.split()方法,那麼我想你可以做這樣的(只是作爲一個例子):

String eq = "ax+by=c"; 
String[] splitStrg1 = eq.split("="); 
String[] splitStrg2 = splitStrg1[0].split("\\+"); 
String part1 = splitStrg2[0]; 
String part2 = splitStrg2[1]; 
String part3 = splitStrg1[1]; 

System.out.println("Part 1 is: " + part1); 
System.out.println("Part 2 is: " + part2); 
System.out.println("Part 3 is: " + part3);