我必須編寫一個程序,將用戶的化學方程作爲輸入,如NaCl2,並將其分離爲單個元素和與其關聯的數字。有沒有辦法通過一個字符串解析並將各個元素(如NaCl2中的元素)配對成Na和Cl2?化學方程式解析
化學方程式解析
回答
正如您在評論中提到的那樣,檢查字母是大寫還是小寫是此問題的關鍵。你想要解決這個問題的方法是Character.isUppercase()
。你的代碼應該迭代輸入字符串中的字符並將每個字符傳遞給此方法。我寫了一個代碼的粗略草案來演示它(並且它也爲您打印輸出 - 多麼方便!):
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<String> elements = new ArrayList<>();
System.out.print("Enter formula: ");
String formula = sc.next();
String s = "";
for (int i=0; i<formula.length(); i++) {
if (Character.isUpperCase(formula.charAt(i))) {
if (!s.isEmpty()) {
elements.add(s);
}
s = "" + formula.charAt(i);
} else {
s += formula.charAt(i);
}
}
elements.add(s);
for (int i=0; i<elements.size(); i++) {
System.out.print(elements.get(i) + " ");
}
System.out.println();
}
好的。新的信息。我必須通過我剛寫完的文本文件獲取每個元素的原子質量,然後,我必須計算分子量,然後將化合物和權重以及用戶名輸出到文本文件中。我可以使用我知道的掃描儀獲取他們的名字,但我不確定如何從文件讀取或寫入文件? @BethanyLouise –
您可以使用FileWriter寫入文件。 https://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html在退出程序之前,您需要確保使用'close()'關閉它,否則文本文件將只是空的。要從文件中讀取,您可以簡單地使用從文件中讀取而不是從System.in中讀取的掃描器。每當你處理文件操作時,你還需要設置你的程序拋出一個IOException或者在try-catch語句塊中包含相關部分的代碼;如果您使用Netbeans這樣的IDE,它會提示您執行此操作。 –
這可以通過多種方式完成。其中之一是使用正則表達式。在這種情況下,表達式查找一個大寫字符,隨後可以選擇小寫字母,隨後可以選擇一個數字。
Pattern elementPattern = Pattern.compile("(\\p{Upper}\\p{Lower}?)(\\p{Digit}*)");
這可以用於發現在輸入的所有元素:
Matcher elementMatcher = elementPattern.match(input);
while (elementMatcher.find()) {
String element = elementMatcher.group(1);
String count = elementMatcher.group(2);
System.out.println("Element: " + element + " count: " + count);
}
- 1. 解析化學公式
- 2. C#解析含PARENTHESES的化學公式
- 3. 解析Java中的數學方程
- 4. 解析數學表達式
- 5. 解析數學表達式
- 6. PHP - 解析字符串內部的數學方程式
- 7. 楓,化學方程式平衡
- 8. Python:數學表達式解析
- 9. 簡單的數學表達式解析
- 10. Prolog解析後綴數學表達式
- 11. 開源數學表達式解析器?
- 12. 用PHP解析數學表達式
- 13. 解析數學表達式+ gensub
- 14. 以編程方式解析前綴,Jena
- 15. LinqToXml:解析和格式化
- 16. 解析數學表達式,該方法的分類是什麼?
- 17. 如何從數學方程中解析令牌?
- 18. 學習Adobe分析的最佳方式
- 19. 數學方程式與Python
- 20. 解析HTML DOM方式
- 21. 數據解析,pythonic方式
- 22. Javascript數學解析器庫
- 23. 化學式(或數學表達式)
- 24. 解析一個方程
- 25. 解析器錯誤(Javascript初學者尋找解決方案)
- 26. 如何在android中顯示數學符號,物理,化學方程式?
- 27. 描述化學方程式的Scipy ODE錯誤
- 28. 數學求解微分方程
- 29. 數學非線性方程解算器
- 30. 無法理解的Harris算數學方程式的步驟
豈不相應陽離子/陰離子變成娜(-2)和Cl(-1)。並相應地處理額外的離子。你可以將週期表硬編碼爲散列表或其他東西。 – Tdorno
我還沒有嘗試過任何東西。我的想法是,如果一個字符是大寫字母,那麼它會啓動一個新元素,如果後面的那個字符是小寫字母,那就是元素的結尾,如果後面的字符是數字,它也與該元素配對,除非我還沒有學會幫助確定一個字符是大寫還是小寫。 –