【问题标题】:(java) how to split a number on parts and then compare them to each other(java)如何在零件上拆分一个数字,然后将它们相互比较
【发布时间】:2013-02-03 21:07:31
【问题描述】:

我想知道如何在零件上拆分一个数字,然后将它们相互比较

例如,我有一组数字

 989010
 990009
 991008
 992992
 993006
 994005
 995004

我想把每个数字分成两部分 -->>

if it's 989010 -- it will be like '989' and '010'. 

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

我的意思是,

   '989' != '010'  true
   '990' != '009'  true 
   '992' != '992'  false

看来我应该使用拆分功能,但是我很困惑如何仅在两个部分而不是更多部分上分开

提前致谢!

【问题讨论】:

  • 在您的情况下,一个简单的substring() 就可以完成这项工作。如需比较,请查看How do I compare strings in Java
  • 所有数字都是 6 位数字还是可能会有所不同?
  • @giorashc 是的,他们这样做了
  • @Leo 你能告诉我们你尝试了什么吗?
  • 不,我不能。我在编写程序的另一部分时遇到了这个问题

标签: java string split


【解决方案1】:
String str = "989010";

System.out.println(str.substring(0, 3).equals(str.substring(3,6)));

【讨论】:

    【解决方案2】:

    您可以通过多种方式做到这一点。

    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 seconds,哈哈。

    【讨论】:

    • 在发布之前运行您的代码并查看输出。这只能像这样工作:int secondPart = number - firstPart * 1000;
    • 123456/1000 == 123 != 123456-123 == 123333
    • @MarounMaroun:没有其他人有这种方法,所以我为 bmorris591 修复了它
    【解决方案3】:
        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);
    

    【讨论】:

      【解决方案4】:

      看看这个

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

      【讨论】:

        【解决方案5】:
        `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");
         }`
        

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

        【讨论】:

        • ==!= 用于String - 比较参考而不是内容本身。它们将始终为 Not equal,除非它们在 String pool 中指向相同的 String
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-20
        • 1970-01-01
        相关资源
        最近更新 更多