在现有文件(由用户选择)上添加文本,但要使用特定的括号。像:缺少“)”,然后在行上添加

我的代码将首先读取文件并获取所有括号并放在列表中,然后它将分析是否缺少特定的括号,例如:read:(,missing:)。并在特定的行上添加(我找不到要添加的行,也不知道如何添加确切的括号)。

第二,它将找到左/右括号的数量,例如:它具有4'('和3')'并显示行号。 (我的代码执行此操作,但仅在一行中进行,例如:仅显示缺少的最后一行)。

public class Exemplo {

 private static final List<Character> abridores = new ArrayList<Character>(Arrays.asList('(','[','{'));
 private static final List<Character> fechadores = new ArrayList<Character>(Arrays.asList(')',']','}'));

 public static int verificarparen(String s) {

 Stack<Character> stack = new Stack<Character>();
 int linha = 1;
 boolean string = false,character = false;
 for (char c : s.toCharArray()) {
  if (c == '\n') {
    linha++;
    continue;
  }
  // NÃO SUPORTA STRING COM ASPAS DUPLAS DENTRO (\") E CHAR COM ASPAS DENTRO (\')
  if (c == '"' && character == false) {
    string = !string;
    continue;
  } else if (c == '\'' && string == false) {
    character = !character;
    continue;
  }

  if (string || character) {
    continue;
  }

  if (abridores.contains(c)) {
    stack.push(c);
  } else if (fechadores.contains(c)) {
    if (stack.isEmpty()) {
      return linha;
    }
    Character abridorCorrespondente = abridores.get(fechadores.indexOf(c));
    if (!abridorCorrespondente.equals(stack.pop())) {
      return linha;
    }
  }

}
if (stack.isEmpty() && !string && !character) {
  return 0;
} else {
  return linha;
 }
}

public static void main(String[] args) {
Scanner ler = new Scanner(System.in);

System.out.printf("Informe o nome de arquivo texto:\n");
String nome = ler.nextLine();

System.out.printf("\nConteúdo do arquivo texto:\n");
try {

  FileReader arq = new FileReader(nome);
  FileWriter arqq = new FileWriter(nome,true);
  BufferedReader lerarq = new BufferedReader(arq);
  BufferedWriter buf = new BufferedWriter(arqq);

  String codigo = lerarq.lines().collect(Collectors.joining("\n"));

  int ret = verificarparen(codigo);

  if (ret == 0) {
    System.out.println("arquivo Balanceado");
  } else {
    System.out.printf("arquivo desbalanceado na linha: %d\n",ret);
   // buf.a
   // System.out.printf("File fixed %\n");
    buf.close();
  }

  arq.close();

 } catch (IOException e) {
  System.err.printf("Erro na abertura do arquivo: %s.\n",e.getMessage());
}
 ler.close();

 }
}
lyloney 回答:在现有文件(由用户选择)上添加文本,但要使用特定的括号。像:缺少“)”,然后在行上添加

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3000195.html

大家都在问