Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(java)如何在部件上拆分一个数字,然后相互比较_Java_String_Split - Fatal编程技术网

(java)如何在部件上拆分一个数字,然后相互比较

(java)如何在部件上拆分一个数字,然后相互比较,java,string,split,Java,String,Split,我想知道如何把一个数字分成几个部分,然后相互比较 例如,我有一组数字 989010 990009 991008 992992 993006 994005 995004 我想把每个数字分成两部分-->> 在那之后,我想我可以比较两个字符串,对吗 我是说 '989' != '010' true '990' != '009' true '992' != '992' false 似乎我应该使用split函数,但是我不知道如何只在两个部分而不是更多部分上进行分离

我想知道如何把一个数字分成几个部分,然后相互比较

例如,我有一组数字

 989010
 990009
 991008
 992992
 993006
 994005
 995004
我想把每个数字分成两部分-->>

在那之后,我想我可以比较两个字符串,对吗

我是说

   '989' != '010'  true
   '990' != '009'  true 
   '992' != '992'  false
似乎我应该使用split函数,但是我不知道如何只在两个部分而不是更多部分上进行分离


提前谢谢

有几种方法可以做到这一点

String str = "989010";

System.out.println(str.substring(0, 3).equals(str.substring(3,6)));
String.substring
将为您提供两个字符串,或者您可以对数字进行除法

int number = 123456;
int firstPart = number / 1000;
int secondPart = number - firstPart * 1000;
编辑
很抱歉,我赶时间。
为了弥补这一点,我将再次证明,任何值得解决的问题都可以通过
regex
语言(通常令人困惑)来解决:

    final String[] strings = new String[]{"123123", "123456"};
    final Pattern pattern = Pattern.compile("([\\d]{3})\\1");
    for (final String string : strings) {
        final Matcher matcher = pattern.matcher(string);
        if (matcher.matches()) {
            System.out.println(string + " matches.");
        }
    }
输出:

run:
123123 matches.
BUILD SUCCESSFUL (total time: 0 seconds)
甚至需要
0秒
,哈。

看看这个

    Long number = 989010L;
    String text = number.toString();
    String firstPart = text.substring(0,3);
    String secondPart = text.substring(3);

    Long firstNumber = Long.parseLong(firstPart);
    Long secondNumber = Long.parseLong(secondPart);

    System.out.println(firstNumber == secondNumber);
public static void main(String[] args) {

        String[] values = { "989010", "990009", "991008", "992992", "993006", "994005", "995004" };

        for(String value : values) {
            String firstPart = value.substring(0, 3);
            String secondPart = value.substring(3);
            if(firstPart.equals(secondPart)) {
                System.out.println(firstPart + " equals " + secondPart);
            }
        }
    }

编辑:对,我比较了错误的子字符串,很抱歉。在Java中比较字符串时,还应该使用equals()。我更新了代码以生成两个整数。可能会提供额外的比较功能

在您的情况下,一个简单的
substring()
就可以完成这项工作。为了进行比较,请看所有数字是否都有6位数字,或者可能会有所不同?@giorashc是的,他们do@Leo你能告诉我们你试过什么吗?不,我不能。我在编写程序的另一部分时遇到了这个问题。在发布之前,请运行代码并查看输出。这只会像这样工作:
intsecondpart=number-firstPart*1000
123456/1000==123
!=
123456-123==123333
@MarounMaroun:没有其他人有这种方法,所以我为bmorris591
==
修复了它=用于
字符串
-比较引用,而不是内容本身。除非它们指向
字符串池中相同的
字符串,否则它们总是不相等。
public static void main(String[] args) {

        String[] values = { "989010", "990009", "991008", "992992", "993006", "994005", "995004" };

        for(String value : values) {
            String firstPart = value.substring(0, 3);
            String secondPart = value.substring(3);
            if(firstPart.equals(secondPart)) {
                System.out.println(firstPart + " equals " + secondPart);
            }
        }
    }
`String s = "931492";
 int first = Integer.parseInt(s.substring(0, s.length()/2));
 int second = Integer.parseInt(s.substring(s.length()/2));
 if (first != second)
 {
    System.out.println("Not equal");
 }`