如果我执行以下代码:
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认证书中做一些练习.在有关垃圾收集的问题中,它们提供以下代码:
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之后收集; 因为不再引用它,但他们给出的答案是:
当运行此代码的实例符合垃圾回收条件时
我错过了什么?
我刚刚遇到一段代码,它将一个aList转换成一个MultiKeyMap调用一个带有MultiKeyMapas参数的方法的代码:
someMethod ((MultiKeyMap) myList);
Run Code Online (Sandbox Code Playgroud)
哪里myList是List.
当然,它会ClassCastException在运行时抛出.为什么它没有显示编译错误或至少有一个警告"类型安全:未经检查的强制转换",因为在尝试将其Collection转换为Map?两种类型都没有任何共同之处.
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.我尝试了一些其他类似的方法,我得到了同样的错误.