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を使用している場合は、これを行うように指示されます。 –
これは、いくつかの方法を行うことができます。そのうちの1人は正規表現を使用しています。この場合、式は大文字を検索し、オプションで小文字が続き、オプションで数字が続きます。
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. 解析式 - Pythonの
- 3. Linq式の解析
- 4. IMPORTXML式解析エラー
- 5. ログ解析ツール(フィルタリング/グループ化/マルチスレッド解析)
- 6. 科学的クロマトグラムの画像解析
- 7. ガウスNB機械学習 - 機能解析
- 8. 計算物理学、FFT解析
- 9. iCalendar形式の解析
- 10. ブール式で解析+と*
- 11. ビデオ解析のファイル形式
- 12. 数式解析ライブラリC++
- 13. Python xlwt数式解析エラー
- 14. SympifyError解析多項式
- 15. Pythonでの数式解析
- 16. 算術式の解析parse
- 17. 構造化された形式を解析する方法は?
- 18. 論理式を解析して構文解析する
- 19. XMLシリアル化VS XML解析
- 20. LINQ式ツリー解析の問題
- 21. 奇妙な形式のファイルの解析
- 22. 任意のテキストデータ形式の解析
- 23. Flink:エラー解析数値形式
- 24. 解析と書式の日付
- 25. FParsec括弧付きの解析式
- 26. C#の解析timestampwith形式「YYYYMMDD HH:MM:SS.ms」
- 27. protobufテキスト形式の解析マップ
- 28. NCronTabでのcron式の解析C#
- 29. 複素数で式を解析する
- 30. XML形式のファイルの解析
は、それぞれのカチオン/アニオンは(-2)のNaに変わるとCl(-1)ではないであろう。それに応じて余分なイオンを処理します。あなたはハッシュマップか何かに周期表をハードコードすることができます。 – Tdorno
私は何も試していません。私の考えは、ある文字が大文字であれば、新しい要素を開始し、後の要素が小文字の場合は要素の終わりであり、その後の文字が数字の場合は、その要素とペアになりますキャラクターが大文字か小文字かを判断するのに役立つとは思っていません。 –