Tag: 数字

从Java中的字符串中提取数字

我有一个带有数字的字符串,我想要检索该数字。 例如,如果我有一个字符串“bla bla 45 bla bla”我想得到数字45.我搜索了一下,发现这段代码应该能够完成工作 Matcher matcher = Pattern.compile(“\\d+”).matcher(“bla bla 45 bla bla”); if(matcher.matches()) String result = matcher.group(); 但它没有:( 可能问题是“\ d +”正则表达式被转换为“^ \ d + $”,因此匹配器与文本内的数字不匹配。 有任何想法吗。

RowFilter.NumberFilter:无法处理“混合”具体数字类型

如果至少有一个值(值= = RowFilter中的值,条目中的值)是小数,则会发生。 这是一个失败的测试: @Test public void testRowFilterNumberMixCore() { TestEntry entry = new TestEntry(1.2f); RowFilter filter = RowFilter.numberFilter(ComparisonType.AFTER, 1, 0); assertTrue(entry + “must be included ” + filter, filter.include(entry)); } 输出是: junit.framework.AssertionFailedError: 必须包含[entry:1.2] [RowFilter:ComparisonType = AFTER,equivalentValue:1,comparativeClass:class java.lang.Integer] 原因是NumberFilter回退到将数字与它们的数字进行比较.longValue()如果它们不是同一个类(并且可以相互比较) 知道了这个细节,测试失败并不令人惊讶(在后视中,从未想过这是一个问题;-)一个级别的防御是确保 – 在客户端代码中 – 要比较的数字是相同的类。 这并不总是可能的(想想fi:tableColumn with columnClass Number)所以我想知道是否/如何改进后备。 就像是: if (one instanceof Comparable && one.getClass() == […]

从String中解析多个双精度数

我想知道如何从字符串中解析几个双数,但字符串可以混合,例如: String s = “text 3.454 sometext5.567568more_text” 。 标准方法( Double.parseDouble )不合适。 我试图使用isDigit方法解析它,但是如何解析其他字符和. ? 谢谢。

java中的字符串数

我有类似“ali123hgj”的东西。 我想要123整数。 我怎么能在java中做到这一点?

java.lang.Number不实现“+”或任何其他运算符?

我正在创建一个类,它应该能够与任何类型的数组(float,int等)一起使用,所以这里有一个方法: // T extends Number public synchronized T[] average() { Number[] ret = new Number[queue[0].length]; for (int i = 0; i < ret.length; ++i) { for (int j = 0; j < size; ++j) { ret[i] += queue[j][i]; // WTF ERROR?! } ret[i] /= size; // WTF ERROR?! } return (T[])ret; } 除非这不会编译,因为“Number”没有实现“+ =”或“/ =”运算符。 […]

如何使用BigInteger类在Java中生成随机n位整数?

我不确定如何使用BigInteger类在Java中生成随机n位整数。

使用inheritance的重载方法

我有两节课: public class ClassA { public void method(Number n) { System.out.println(“ClassA: ” + n + ” ” + n.getClass()); } } 和: public class ClassB extends ClassA { public void method(Integer d) { System.out.println(“ClassB: ” + d + ” ” + d.getClass()); } } 但是当我跑步时: ClassA a = new ClassB(); a.method(3); 我明白了: ClassA: 3 class […]

Java Double值= 0.01更改为0.009999999999999787

可能重复: 为什么不使用Double或Float来表示货币? 我正在为我的高中课程编写一个基本的Java命令行程序。 我们现在只处理变量。 它用于计算购买后更改中任何类型的账单和硬币数量。 这是我的计划: class Assign2c { public static void main(String[] args) { double cost = 10.990; int paid = 20; double change = paid – cost; int five, toonie, loonies, quarter, dime, nickel, penny; five = (int)(change / 5.0); change -= five * 5.0; toonie = (int)(change / 2.0); change -= toonie […]

检查int是否更有效率

我最近参加了我学校的一个小型java编程比赛。 我和我的伙伴刚刚完成了我们的第一个纯oop课程,大部分问题都在我们的联盟之外,所以我们选择了这个问题(我在某种程度上解释):“给定一个输入整数n,返回下一个整数和例如,如果n = 18,你的程序应该打印31“因为31和13都是素数,所以它的反向也是素数。 然后,您的.class文件将包含一个测试用例,其中包含1-2,000,000,000个传递给它的所有可能数字,并且必须在10秒内返回正确答案才能被视为有效。 我们找到了一个解决方案,但是如果测试用例较大,则需要10秒以上的时间。 我相当确定有一种方法可以将n,… 2,000,000,000的循环范围向下移动,因为当n是一个较小的数字时,需要循环的可能性很小,但是无论哪种方式我们在一个数字时打破了循环在这两种情况下都是素数。 起初我们从2,… n循环,无论它有多大,我都记得关于只循环到n的平方根的规则。 有关如何提高程序效率的任何建议? 我没有处理算法复杂性分析的课程。 这是我们的尝试。 public class P3 { public static void main(String[] args){ long loop = 2000000000; long n = Integer.parseInt(args[0]); for(long i = n; i=0; j–) r = r + s.charAt(j); if(prime(i) && prime(Long.parseLong(r))) { System.out.println(i); break; } } System.out.println(“#”); } public static boolean prime(long […]

Java:格式数以百万计

有没有办法使用DecimalFormat(或其他一些标准格式化程序)来格式化这样的数字: 1,000,000 => 1.00M 1,234,567 => 1.23M 1,234,567,890 => 1234.57M 基本上将一些数字除以100万,保留2个小数位,并在末尾拍一个“M”。 我已经考虑过创建一个新的NumberFormat子类,但它看起来比我想象的要复杂。 我正在编写一个API,其格式方法如下所示: public String format(double value, Unit unit); // Unit is an enum 在内部,我将Unit对象映射到NumberFormatters。 实现是这样的: public String format(double value, Unit unit) { NumberFormatter formatter = formatters.get(unit); return formatter.format(value); } 请注意,因为这个,我不能指望客户端除以100万,我不能只使用String.format()而不将它包装在NumberFormatter中。