在Java中比较两个整数字符串

5

我有两个包含数字的字符串,我想要判断第二个字符串是否包含与第一个字符串相同的数字,无论它们是否按顺序排列。如果有任何重复的数字,则报告为假。除了使用.charAt()之外,在Java中还有其他方法吗?因为对于10之后的数字不起作用。

String one = "1 2 3 4 5 "; 
String two = " 3 2 1 4 5 ";
String three = "3 2 1 4 4 "; 
8个回答

7

1
这是关于编程的内容,翻译成中文如下:这不是作业,而是去年的项目,我现在重新练习。 - chuck finley
3
@sibghatuk - 同样的原则适用。如果我们给你提示,让你自己解决完整的答案,你会学到更多。这不是你想要做的吗? - Stephen C

4
您可以使用Scanner.nextInt()从字符串中读取数字,将它们添加到Set中,然后查看set1.equals(set2)是否为真。

2
试试这样做。
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);

2
我不会对原始字符串进行比较。相反,先将每个 String 转换为一个 List<Integer>,使用 String.split()Integer.parseInt() 对每个结果进行转换。然后,sort() 列表按升序排序,这样就很容易进行比较了。

0

我首先会将数字解析为整数,将它们放入集合中并进行比较:

  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;
    }
}

0
你可以根据空格对字符串进行分词/拆分,然后循环遍历结果标记,这些标记本身就是数字。

0
你需要按照空格拆分字符串(可以使用 String.splitStringTokenizer),然后将每个标记转换为数字。将字符串1中的所有数字放入 HashSet 中。对字符串2执行相同的操作。现在,您所要做的就是检查第一个 HashSet 中的每个条目是否也出现在第二个中。

MAK - OP提到了可能存在重复的情况。这意味着你的解决方案并不总是可行的。 - Stephen C
@Stephen C:确实如此。但是他可以在插入集合时始终检查重复项。这个问题看起来像作业,所以我不想透露太多。 - MAK

-1
尝试将字符串解析为整数。
Integer.parseInt(One).intValue() == Integer.parseInt(two).intValue()

我不确定你想做什么,但我猜你最好使用数组。


1
你无法从带有空格的字符串中解析出整数 - 你会得到一个 NumberFormatException - Bohemian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接