【问题标题】:working code in Ubuntu terminal, doesn't work in Windows EclipseUbuntu 终端中的工作代码,在 Windows Eclipse 中不起作用
【发布时间】:2014-10-16 22:41:33
【问题描述】:

我正在尝试用useDelimiter 解析像"dd/mm/yyyy" 这样的日期格式,但遇到了一个奇怪的问题。我使用了下面的代码,在 Ubuntu 终端上运行良好。

Scanner k = new Scanner(System.in);
k.useDelimiter("/|\n");
String day,month,year;
day = k.next(); month = k.next(); year = next();
System.out.println(day + "/" + month + "/" + year);
int d = Integer.parseInt(day);
int m = Integer.parseInt(month);
int y = Integer.parseInt(year);

但是在 Windows 上,当我将此代码复制到 Eclipse 时,它​​会在以下位置出现错误:

int y = Integer.parseInt(year);

我找到了造成这种情况的原因。当我打印“年”时,它会打印 2014 年,但 2014 的末尾有一些空格,因此无法正确解析整数。我通过将 Eclipse 中的代码更改为:

year = next().trim();

但是:

我的问题是,相同的代码怎么可能在 Ubuntu 上运行,但在 Windows 平台上却不行?

【问题讨论】:

    标签: java eclipse windows parsing ubuntu


    【解决方案1】:

    您也可以使用 line.seperator。 System.getProperty("line.separator") 将检索您的操作系统使用的正确行分隔符。

    public class Tester {
    
    
     public static void main(String[] args) {
        Scanner k = new Scanner(System.in);
        String newLine = System.getProperty("line.separator");
    
        k.useDelimiter("/|"+newLine);
        String day,month,year;
    
        day = k.next(); 
        month = k.next(); 
        year = k.next();
        System.out.println(day + "/" + month + "/" + year);
    
    
     }
    }
    

    【讨论】:

    • 这是更灵活的解决方案,感谢您的建议
    【解决方案2】:

    尝试将 \r 添加到分隔符。 在 Ubuntu 中,新行只有 \n,而在 Microsoft 中,新行是 '\r\n'

    【讨论】:

    • 不仅仅是 Ubuntu——几乎所有的 Unix 系统都使用\n(换行),而 Windows 使用\r\n(回车,换行)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多