jjzjj

Java:将 int[] 转换为范围的最小表示

给定一组int值,如何将序列解析为计数序列符号?例子:{1,2,3,4,5,9,13,14,15}->"1-5,9,13-15"{4,6,8,10,11,12,15,17}->"4,6,8,10-12,15,17"我正在寻找一种可以产生这些结果的方法。这是我到目前为止所拥有的,但在这一点上我非常难过:测试代码:importjava.util.Arrays;publicclassTestSequencing{publicstaticvoidmain(String[]args){int[]numbers1={1,2,3,4,5,9,13,14,15};Stringnumbers1s="1-

java - 如何检查字符串是否代表数字以及代表什么类型?

我如何检查一个字符串是表示long、double还是普通字符串?我需要这样做,因为这个值需要根据其类型在数据库中建立索引。目前我正在通过尝试解析字符串并检查异常来做到这一点,但由于代码被非常频繁地调用,我想知道是否有更有效的方法来做到这一点。我的代码目前看起来像这样:Stringvalue=...;//Forexample,couldbe"213678","654.1236781",or"qwerty12345"try{LonglongValue=Long.parseLong(value);//Index'longValue'inthedatabase}catch(NumberForm

java - 检测数组是否包含整数或 double

我正在从事一个项目,该项目要求我使用数组的字符串表示形式。问题是有这个重复的代码,我确信可以通过某种方式重构它,但我还没有找到一个。privatestaticStringprintDoubleArray(Stringtitle,double[]array){Stringresult=title;for(doubled:array){result+=d+"";}returnresult;}privatestaticStringprintIntArray(Stringtitle,int[]array){Stringresult=title;for(intd:array){result+=d

Java - 格式化数字以仅打印小数部分

Java中是否有一种简单的方法来格式化小数、float、double等以仅打印数字的小数部分?我不需要整数部分,即使/特别是如果它为零!我目前正在使用String.indexOf(".")方法结合String.substring()方法来提取小数点右侧的数字部分。有没有更清洁的方法来做到这一点?在DecimalFormat类或printf方法中找不到任何内容。两者总是在小数点前返回零。 最佳答案 您可以通过将double转换为long来删除值的整数部分。然后,您可以从原始值中减去它,只剩下分数值:doubleval=3.5;long

java - 在 Java 8 中使用 Streams 代替 for 循环

int[]numbers={1,2,3,4,5,6,7,8};int[]doubleNumbers=newint[numbers.length];int[]tripleNumbers=newint[numbers.length];for(intindex=0;index我在上面的代码中使用了for循环,将数字加倍和加倍,并在单个循环中将其存储在不同的数组中。任何人都可以帮助我使用流及其映射和其他方法编写相同的代码,而无需对数字数组进行两次迭代。 最佳答案 你可以这样做:IntStream.range(0,numbers.length

java - java中的字符串数字

我有类似“ali123hgj”的东西。我想要整数123。我怎样才能用Java制作它? 最佳答案 inti=Integer.parseInt("blah123yeah4yeah".replaceAll("\\D",""));//i==1234请注意这将如何将字符串不同部分的数字“合并”为一个数字。如果你只有一个号码,那么这仍然有效。如果你只想要第一个数字,那么你可以这样做:inti=Integer.parseInt("x-42x100x".replaceAll("^\\D*?(-?\\d+).*$","$1"));//i==-42正则

java - 检查数组中是否存在元素

一个简单的Java代码,用于检查一个元素是否存在于数组中:importjava.util.Arrays;publicclassMain{staticint[]numbers={813,907,908,909,910};publicstaticvoidmain(String[]args){intnumber=907;//Integernumber=907;//thesamething--it'snotfound.booleanb=Arrays.asList(numbers).contains(number);System.out.println(b);//=>false}}1)为什么在数

java - 排序 50 000 000 个数字

假设我们需要对50000000个数字进行排序。假设这些数字存储在一个文件中。解决这个问题最有效的算法是什么?排序的并行算法...怎么做?也许有用的链接)我不会用标准算法所以我问你方法和算法:)好的..我读到了关于并行归并排序的内容...但我并不清楚。解决方案,第一个版本codeislocatedhere 最佳答案 5000万不算特别多。我只是将它们读入内存。将它们分类并写出来。它应该只需要几秒钟。你需要多快?您需要它有多复杂?在我的旧labtop上花了28秒。如果我有更多的处理器,它可能会快一点,但大部分时间都花在读取和写入文件上(

java - 解析/转换包含字符和数字的任务

需要重复字符,重复次数与其后面的数字一样多。它们是正整数。case#1input:"abc3leson11"output:"abccclesonnnnnnnnnnn"我已经通过以下方式完成了:Stringa="abbc2kd3ijkl40ggg2H5uu";Strings=a+"*";StringnumS="";intcnt=0;for(inti=0;i但我想知道有没有更好的解决方案,代码更少更干净? 最佳答案 你能看看下面吗?我正在使用来自ApacheCommonUtils的StringUtils库来重复字符:publicclas

java - Numbers 上不需要的自动装箱魔法

下面的程序分别打印'false'和'true':Numbern=true?newLong(1):newDouble(2.0);System.out.println(ninstanceofLong);System.out.println(ninstanceofDouble);所以它不会是Long而是Double。但是,它在普通类上按预期工作:拥有classB{}classD1extendsB{}classD2extendsB{}这将打印“真”:Bb=true?newD1():newD2();System.out.println(binstanceofD1);这意味着它与上面的示例不同。我