我有兩個包含數字的字符串,我想查看第二個字符串是否包含與第一個字符串相同的數字,無論它們是否按順序排列。如果它有任何重複的報告而不是報告。反正java中除了使用.charAt()之外,因爲它不適用於10之後的數字嗎?在java中比較兩個字符串
String one = "1 2 3 4 5 ";
String two = " 3 2 1 4 5 ";
String three = "3 2 1 4 4 ";
我有兩個包含數字的字符串,我想查看第二個字符串是否包含與第一個字符串相同的數字,無論它們是否按順序排列。如果它有任何重複的報告而不是報告。反正java中除了使用.charAt()之外,因爲它不適用於10之後的數字嗎?在java中比較兩個字符串
String one = "1 2 3 4 5 ";
String two = " 3 2 1 4 5 ";
String three = "3 2 1 4 4 ";
嘗試解析int中的字符串。
Integer.parseInt(One).intValue() == Integer.parseInt(two).intValue()
我不知道你在做什麼,但我的猜測是你最好使用數組。
不能從空格的字符串解析爲int - 你會得到一個'NumberFormatException' – Bohemian 2011-06-02 10:30:25
您可以根據空格對字符串進行標記化/拆分,然後遍歷所得到的令牌,這些令牌本身就是數字。
您可以使用Scanner.nextInt()
從字符串中讀取數字,將它們添加到Set
,並查看set1.equals(set2)
是否爲真。
你分割字符串在空白處(使用String.split
或StringTokenizer
),然後將其中的每一個e令牌成爲一個數字。把所有的數字在字符串1中放入一個HashSet
。對字符串2做同樣的事情。現在,您只需檢查第一個HashSet
中的每個條目是否也出現在第二個條目中。
MAK - OP提到重複的可能性。這意味着您的解決方案不會總是有效。 – 2011-06-02 10:36:11
@Stephen C:的確如此。但他可以隨時檢查重複,而插入集。這個問題看起來像家庭作業,所以我不想放棄太多。 – MAK 2011-06-02 17:57:50
我不會對原始字符串進行比較。相反,首先將每個String
轉換爲List<Integer>
,每個結果使用String.split()
和Integer.parseInt()
。然後將sort()
列表按升序排列,然後將它們進行比較變得非常容易。
試試這個。
String one = "1 2 3 4 5 ";
String two = " 3 2 1 4 5 ";
Set<String> a = new HashSet<String> (Arrays.asList(one.trim().replaceAll("\\s*"," ").split(" ")));
Set<String> b = new HashSet<String> (Arrays.asList(two.trim().replaceAll("\\s*"," ").split(" ")));
boolean ret = (a.size() == b.size()) && a.containsAll(b);
我將在第一個數作爲整數分析,把它們設定並加以比較:
import java.util.SortedSet;
import java.util.StringTokenizer;
import java.util.TreeSet;
public class StringsCompare {
private static String one = "1 2 3 4 5 6";
private static String two = " 3 2 1 5 6 4 ";
public static void main(String[] args) {
StringsCompare sc = new StringsCompare();
System.out.println(sc.compare(one, two));
}
private boolean compare(String one, String two) {
SortedSet<Integer> setOne = getSet(one);
SortedSet<Integer> setTwo = getSet(two);
return setOne.equals(setTwo);
}
private SortedSet<Integer> getSet(String str) {
SortedSet<Integer> result = new TreeSet<Integer>();
StringTokenizer st = new StringTokenizer(str, " ");
while (st.hasMoreTokens()) {
result.add(Integer.valueOf(st.nextToken()));
}
return result;
}
}
它不是它的最後一年的項目,我正在重新練習。 – 2011-06-02 10:26:10
@sibghatuk - 同樣的原則適用。如果我們給你提示,並且你爲自己找出完整的答案,你會**更多**。那就是你想要做的......不是嗎? – 2011-06-02 10:33:52