(java)如何在零件上拆分一个数字,然后将它们相互比较
Posted
技术标签:
【中文标题】(java)如何在零件上拆分一个数字,然后将它们相互比较【英文标题】:(java) how to split a number on parts and then compare them to each other 【发布时间】: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 你能告诉我们你尝试了什么吗?
不,我不能。我在编写程序的另一部分时遇到了这个问题
【参考方案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
。以上是关于(java)如何在零件上拆分一个数字,然后将它们相互比较的主要内容,如果未能解决你的问题,请参考以下文章
linux shell脚本:拆分字符串,将它们放在一个数组中然后循环它们[重复]