gpt4 book ai didi

java - 硬编码文件路径与作为命令行参数传递之间的文件输出差异

转载 作者:行者123 更新时间:2023-12-01 18:10:33 24 4
gpt4 key购买 nike

因此,我正在编写一个程序,每次从文件中读取一个字符,对该字符进行操作,然后将输出写入另一个文件。

出于某种原因,当我对文件路径进行硬编码(我这样做只是为了在调试时不必继续键入文件)以及从命令行传递文件时,我得到了不同的结果。

当我从命令行传递文件时,它有时会跳过输入行,因此如果我有一个包含 10 行的文件,我可能只会处理 8 行。

我有一种感觉,这与输入行末尾是否有空格有关,但我似乎无法弄清楚。任何帮助将非常感激。

此外,当我对文件路径进行硬编码时,我使用的是 NetBeans,当我使用命令行参数时,我是从终端运行程序。我已粘贴下面的 I/O 代码。

while( ( i = buffRead.read() ) != -1 )
{
try
{

char c = (char) i;

if ( Character.isWhitespace(c) )
{
if(converter.getStackSize() > 1)
{
converter.resetConverter();
throw new IncorrectNumOfOperandsException();
}

buffRead.readLine();
converter.resetConverter();
writeOut.println();

}
else
{
converter.register( c );
}
}
catch (InvalidCharException j)
{
writeOut.println("Invalid Character Entered\n");
buffRead.readLine();
}
catch (IncorrectNumOfOperatorsException k)
{
writeOut.println("Too Many Operators for Number of Operands\n");
buffRead.readLine();
}
catch ( IncorrectNumOfOperandsException m)
{
writeOut.println("Too Many Operands for Number of Operators\n");
buffRead.readLine();
}

}


buffRead.close();
writeOut.close();

最佳答案

我想我看到了问题所在。

您测试c以查看它是否是空白字符,如果是,则调用readLine()。 readLine() 的作用是读取一个或多个字符,直到到达下一个行尾序列。

那么当c包含换行符时会发生什么?

  • 换行符是一个空白字符(查找)
  • 所以你读了一行,从你刚刚读的换行符后面的第一个字符开始
  • 并丢弃该行。

所以你(不小心)丢掉了一整行输入。

解决方案......我将留给你。

When I pass the file from the command line it will skip input lines sometimes ...

我怀疑当您键入输入时会发生相同的行为......但您没有注意到它。但平台特定的线路终止序列可能发生了一些问题。

关于java - 硬编码文件路径与作为命令行参数传递之间的文件输出差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60476102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com