gpt4 book ai didi

java - 表达式字符串的非法开头

转载 作者:行者123 更新时间:2023-11-29 05:36:51 25 4
gpt4 key购买 nike

我正在尝试制作一个程序来反转文件中的文本行。我还在学习 java,对此我还很陌生。我的程序出错是因为我在循环内创建了一个变量并试图在循环外访问它。我尝试在声明字符串变量之前添加前缀“public”,但是当我尝试编译它时它指向“public”并表示表达式的非法开始。谁能告诉我为什么这是错误的,或者如何解决它。

    import java.io.*;
import java.util.*;

public class FileReverser
{
public static void main(String[] args)
throws FileNotFoundException
{
Scanner console = new Scanner(System.in);
System.out.print("File to Reverse: ");
String inputFileName = console.next();

System.out.print("Output File: ");
String outputFileName = console.next();

FileReader reader = new FileReader(inputFileName);
Scanner in = new Scanner(reader);
PrintWriter out = new PrintWriter(outputFileName);

int number = 0;

while (in.hasNextLine())
{
String line = in.nextLine();
public String[] lines;
lines[number] = line;
number++;
}
int subtract = 0;
for (int i;i>lines.length;i++)
{
out.println(lines[(lines.length-subtract)]);
subtract++;
}

out.close();

}
}

最佳答案

问题:

  • 您要声明 linespublic修饰符,仅适用于实例/静态变量,不适用于局部变量。
  • 你永远不会初始化 lines
  • 您正在尝试使用 lines超出其范围(当前为 while 循环)
  • 您正在尝试使用 i没有初始化它,在这里:

    for (int i;i>lines.length;i++)
  • 你的 if状况不对;你会想继续 i 小于 lines.length
  • subtract初始为 0,因此访问 lines[lines.length - subtract]将抛出一个异常(因为它在数组的边界之外)

您可以使用以下代码修复这些问题:

// See note later
String[] lines = new String[1000];

while (in.hasNextLine()) {
String line = in.nextLine();
lines[number] = line;
number++;
}
// Get rid of subtract entirely... and only start off at "number"
// rather than lines.length, as there'll be a bunch of null elements
for (int i = number - 1; i >= 0; i--) {
out.println(lines[i]);
}

现在这将适用于多达 1000 行 - 但拥有该限制是一件痛苦的事情。最好只使用 List<String> :

List<String> lines = new ArrayList<String>();
while (in.hasNextLine()) {
lines.add(in.nextLine());
}

那么你需要使用 size()而不是 length ,并使用 get而不是数组索引器来访问值 - 但它会更干净的代码 IMO。

关于java - 表达式字符串的非法开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210520/

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