gpt4 book ai didi

java - 数组的非法启动

转载 作者:行者123 更新时间:2023-12-01 08:56:54 25 4
gpt4 key购买 nike

我正在尝试完成这段代码,它迭代给定的文件并打印一个统计前导文件的图表。但是,我收到“(47,42):')'预期”以及“(47,48):非法表达式开始”的错误。代码工作正常(减去跳过行内的注释;我添加了 boolean hasComment 和 for、ifs 和 while 循环)任何建议将不胜感激。

编辑我仍然无法打印程序,但是当我删除 hasComment 方法和嵌套的 for、if 和 while 循环时,它工作正常。但是, hasComment 方法和这些循环应该跳过注释,但不是整行。例如,如果文件中的一行读取“(* comment *) 89”,我需要跳过该注释,但读取 89。任何指针或指导都会很棒,谢谢!

import java.io.File;

import java.io.FileNotFoundException;

import java.util.Scanner;


public class Benford {

  public static boolean hasComment(String s) {

      return s.indexOf("(*") != -1 && s.indexOf("*)") != -1;

  }


  // Reads file and creates array

  private static int[] countDigits(Scanner input) {

      int[] count = new int[10];

      while (input.hasNextInt()) {

          int n = input.nextInt();

          count[firstDigit(n)]++;

      }

      return count;

  }


  // Display chart

  private static void reportResults(int[] count) {

      System.out.println("Digit Count Frequency");

      for (int i = 1; i < count.length; i++) {

          double freq = count[i] * .10;

          System.out.printf("%-5d %-5d %.2f\n", i, count[i], freq);

      }

  }


  // Returns first digit

  private static int firstDigit(int n) {

      int result = Math.abs(n);

      while (result >= 10) {

          result = result / 10;

      }

      return result;

  }


  public static void main(String[] args) throws FileNotFoundException {

      Scanner in = new Scanner(System.in);


      System.out.print("Enter a file name: ");

      String name = in.nextLine();


      Scanner input = new Scanner(new File(name));

      int[] count = countDigits(Scanner input);


      for (int i = 0; i < 10; i++) {

          if (!input.hasNext()) {

              break;

          }

          // else

          String line = input.next();

          String s = " ";

          if (hasComment(line)) {


              int endCommentIndex = line.indexOf("*)");

              line = line.substring(endCommentIndex + 2);

          }

          while (line.charAt(0) == ' ') {

              s = s.replaceAll("\\s+", "");

          }

          reportResults(count);

      }

  }

}

最佳答案

你在这里遇到了问题。

  Scanner input = new Scanner(new File(name));

int[] count = countDigits(Scanner input);

相反,您应该只传递引用。

 Scanner input = new Scanner(new File(name));
int[] count = countDigits(input);

这是不允许的,scape序列“\s+”在

s = s.replaceAll("\s+", "");

有效的是\b\t\n\f\r\"\'\

关于java - 数组的非法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41990150/

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