Java扫描程序useDelimiter不能用法语

时间:2013-12-31 10:13:40

标签: java internationalization

我有一串浮点数,比如

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

有没有其他方法可以获取我的号码,哪些也可以用法语?

1 个答案:

答案 0 :(得分:3)

扫描程序可识别区域设置。对于法语,双倍看起来像0,00023

如果格式没有改变,请在读取下一个double之前设置US语言环境。

sc.useLocale(Locale.US);