我有一串浮点数,比如
1.0000\0.0000\0.0000\0.00000\1.0000\0.0000\0.0000
我需要解析。我使用反斜杠作为分隔符使用Java Scanner。它已用英语工作多年。就在今天,我把法语作为默认语言,在法语中它无法解析,即它没有找到下一个双重语句。我在计算机上也有希伯来语,它用希伯来语解析没有问题。只是法国人是一个问题。
以下是代码:
static float[] parseMultFloat( String tmp1) {
float [] ret1 = null;
double[] val = new double[32]; // arbitrary limit of 32
int i, n = 0;
if( tmp1 == null) return null;
Scanner sc = new Scanner(tmp1).useDelimiter("\\\\");
while(sc.hasNextDouble() && n < 32) {
val[n++] = sc.nextDouble();
}
if( n>0) {
ret1 = new float[n];
for( i=0; i<n; i++) ret1[i] = (float) val[i];
}
return ret1;
}
使用调试器,我可以单步升级到while(sc.hasNextDouble)
。用英语和希伯来语,它会找到我的所有数字。在法语中它只是跳过一段时间并离开n=0
。
有没有其他方法可以获取我的号码,哪些也可以用法语?
答案 0 :(得分:3)
扫描程序可识别区域设置。对于法语,双倍看起来像0,00023
如果格式没有改变,请在读取下一个double之前设置US语言环境。
sc.useLocale(Locale.US);