小编Lui*_*Sep的帖子

Scanner.nextFloat的奇怪行为

如果我执行以下代码:

import java.util.Scanner;

public class ScannerTest {

    public static void main(String[] args) {

        Scanner s = null;
        StringBuilder builder = new StringBuilder(64);
        String line = "1.1 2.2 3.3";
        float fsum = 0.0f;      

        s = new Scanner(line).useDelimiter(" ");

        while (s.hasNextFloat()){
            float f = s.nextFloat();
            fsum += f;
            builder.append(f).append(" ");
        }
        System.out.println("Floats found: " + builder);
        System.out.println("Sum: " + fsum);
        s.close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出是:

Floats found: 
Sum: 0.0
Run Code Online (Sandbox Code Playgroud)

但是,如果我用点替换逗号"1,1 2,2 3,3",那么它确实识别浮点数:

Floats found: 1.1 2.2 3.3 
Sum: 6.6000004
Run Code Online (Sandbox Code Playgroud)

我想这是因为我的SO是西班牙语,我们使用逗号而不是带小数的点.我想过使用Locale,但是没有Locale.SPANISH.

此外,当我运行它时,它的行为正好相反: …

java localization java.util.scanner

2
推荐指数
1
解决办法
1436
查看次数

Java中的垃圾收集器在null之后

我正在从一本java认证书中做一些练习.在有关垃圾收集的问题中,它们提供以下代码:

class Test {
   private Demo d;
   void start() {
      d = new Demo();
      this.takeDemo(d);
   }
   void takeDemo(Demo demo) {
      demo = null;
      demo = new Demo();
   }
}
Run Code Online (Sandbox Code Playgroud)

问题是

何时是在第4行创建的Demo对象,是否有资格进行垃圾回收?

我会说它可以在指令demo = null之后收集; 因为不再引用它,但他们给出的答案是:

当运行此代码的实例符合垃圾回收条件时

我错过了什么?

java garbage-collection

1
推荐指数
1
解决办法
168
查看次数

将List转换为MultiKeyMap时,为什么不会出现编译错误?

我刚刚遇到一段代码,它将一个aList转换成一个MultiKeyMap调用一个带有MultiKeyMapas参数的方法的代码:

someMethod ((MultiKeyMap) myList);
Run Code Online (Sandbox Code Playgroud)

哪里myListList.

当然,它会ClassCastException在运行时抛出.为什么它没有显示编译错误或至少有一个警告"类型安全:未经检查的强制转换",因为在尝试将其Collection转换为Map?两种类型都没有任何共同之处.

java casting

1
推荐指数
1
解决办法
121
查看次数

Java - 带反射的NoSuchMethodException

NoSuchMethodException执行时我得到了:

operacionDTO.getClass().getMethod("setPrioridad").invoke(operacionDTO, 0);

java.lang.NoSuchMethodException: xxxx.api.service.dto.RegasificacionDTO.setPrioridad()
Run Code Online (Sandbox Code Playgroud)

但是类RegasificacionDTO确实有一个调用的公共方法setPrioridad(int i),如果在调试时调用我:

operacionDTO.getClass().getMethods()
Run Code Online (Sandbox Code Playgroud)

然后我得到一个方法数组,其中有一个setPrioridad.我尝试了一些其他类似的方法,我得到了同样的错误.

java reflection

1
推荐指数
1
解决办法
5673
查看次数