我对Java非常陌生,你可以从我的代码中看出来。欢迎任何帮助:)
我有一个包含以下行的文件:
文件中的列:7
确切文件数量(行):118
精确文件记录长度(可变块中的字节):52
我想使用append来提取标签后的数字,但它返回零,而不是标签后的实际数字。这就是我所拥有的:
public int extractVariables(String aLine)
{
Scanner scan = new Scanner(actualFile);
while(scan.hasNext())
{
String line = scan.nextLine();
if(line.contains("Columns in File:"))
{
StringBuilder numOfVariables = new StringBuilder();
for(int i = 16; i < line.length(); i++)
{
numOfVariables.append(charAt(i)).trim();
}
// check if the information is missing
if(numOfVariables != null && !numOfVariables.equals(""))
{
int variables = Integer.parseInt(numOfVariables);
}
else
{
System.out.print("Number of varibales is missing!");
}
}
return variables;
}
}
另外,我要求用户使用命令行参数输入文件,并将文件存储到actualFile中,如下所示:
try{
File actualFile = new File(args[0]);
System.out.println("File was processed: true");
}
catch (ArrayIndexOutOfBoundsException e)
{
System.out.println("File was processed: false. Re-enter filename.");
return;
}
因此我将scanFile的actualFile用于打开文件并读取行,扫描程序是否读取了正确的文件?也许这就是该方法返回零的原因?
答案 0 :(得分:0)
而不是做
for(int i = 16; i < line.length(); i++)
{
numOfVariables.append(charAt(i)).trim();
}
使用nextInt()似乎更好; 所以,代码看起来像这样:
line.nextInt();
此外,要检查是否有号码或缺少号码,您可以使用:
if(line.hasNextInt()) {...}