mumei2018 发表于 2023-8-4 13:40:15

请问idea里数组索引值变红了是咋回事呢请问

import java.util.Scanner;

public class ArrayDemo4 {
    public static void main(String[] args) {
      double[] scores = new double;
      Scanner sc = new Scanner(System.in);
      for (int i = 0; i < scores.length; i++);{
            
            double score = sc.nextDouble();
            scores = score;
      }
      double sum = 0;
      for (int i = 0; i < scores.length; i++) {
            sum += scores;
      }
      System.out.println("AS is:" + sum/scores.length);
    }
}

12行那 scores里的索引变红了 中文报错找不到符号 请问是咋回事呢?

学习编程中的Ben 发表于 2023-8-4 13:40:24

本帖最后由 学习编程中的Ben 于 2023-8-4 13:49 编辑

在您提供的代码中,出现了一个分号使得错误产生了。
问题出在 for 循环的语句块上。请注意以下代码段:
javafor (int i = 0; i < scores.length; i++);{

在这里,您使用了一个额外的分号将 for 循环的语句块结束了。因此,后面的代码块不再被视为循环的一部分,导致 scores 中的索引无法识别。

为了解决这个问题,您只需要删除多余的分号,代码如下所示:
for (int i = 0; i < scores.length; i++) {
    double score = sc.nextDouble();
    scores = score;
}

请重新运行代码,这次应该不会再出现索引变红的错误了。祝您编写愉快!

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-8-4 13:40:26

这个问题是因为在你的代码中有一个多余的分号导致的。

在for循环的第一行,你多加了一个分号,这会导致循环体为空,而后面的代码会在循环结束后执行。因此,当你尝试访问scores[ i]时,编译器会报错找不到符号,因为循环已经结束,i不再是有效的索引。

要解决这个问题,只需将第12行的分号删除即可。修改后的代码如下:

import java.util.Scanner;

public class ArrayDemo4 {
    public static void main(String[] args) {
      double[] scores = new double;
      Scanner sc = new Scanner(System.in);
      for (int i = 0; i < scores.length; i++) {
            double score = sc.nextDouble();
            scores[ i] = score;
      }
      double sum = 0;
      for (int i = 0; i < scores.length; i++) {
            sum += scores[ i];
      }
      System.out.println("AS is:" + sum/scores.length);
    }
}


请注意,这个问题是一个常见的错误,当你在编写代码时,务必要注意语法和标点符号的正确使用。

Mike_python小 发表于 2023-8-4 13:40:28

本帖最后由 Mike_python小 于 2023-8-4 10:56 编辑

问题:为什么在第12行的scores出现红色下划线?

在你的代码中,第12行的scores出现红色下划线是由于在for循环语句中多了一个分号(;)导致的。

以下是修正后的代码:


import java.util.Scanner;

public class ArrayDemo4 {
    public static void main(String[] args) {
      double[] scores = new double;
      Scanner sc = new Scanner(System.in);
      for (int i = 0; i < scores.length; i++) { // 移除多余的分号
            double score = sc.nextDouble();
            scores = score;
      }
      double sum = 0;
      for (int i = 0; i < scores.length; i++) {
            sum += scores;
      }
      System.out.println("AS is:" + sum/scores.length);
    }
}


请注意,原始代码中的for循环的结尾有一个分号(;),这会导致循环体为空。因此,下面的代码块被视为独立的代码块,与for循环无关。这就解释了为什么在scores上显示找不到符号的错误。

修正后的代码已经移除了额外的分号,现在for循环正常执行,不再出现红色下划线。

tyh小号 发表于 2023-8-4 13:40:29

在你提供的代码中,出现了一个导致索引错误的小错误。问题出在第8行的循环体后面多了一个分号 ;,导致循环失去了作用,而后面的代码块 {double score = sc.nextDouble();scores[ i] = score;} 单独成为了一个独立的代码段。这会导致编译器无法找到 i 的定义,从而报错 "找不到符号"。

要解决这个问题,你只需要删除掉第8行循环体后面的那个分号 ; 即可。修改后的代码如下所示:

import java.util.Scanner;

public class ArrayDemo4 {
    public static void main(String[] args) {
      double[] scores = new double;
      Scanner sc = new Scanner(System.in);

      for (int i = 0; i < scores.length; i++) {
            double score = sc.nextDouble();
            scores[ i] = score;
      }

      double sum = 0;
      for (int i = 0; i < scores.length; i++) {
            sum += scores[ i];
      }

      System.out.println("AS is: " + sum/scores.length);
    }
}


请注意,在修复了分号错误后,我还添加了对最后一行 System.out.println 语句的修改,将字符串连接符后的空格补上,以保持代码格式的一致性。

修复以上问题后,你应该不再遇到索引变红的问题,并且代码能够正确执行。希望能对你有所帮助!
如果问题已经解决,请设置最佳答案

tyh小号 发表于 2023-8-4 13:41:12

学习编程中的Ben 发表于 2023-8-4 13:40
在您提供的代码中,出现了一个分号使得错误产生了。
问题出在 for 循环的语句块上。请注意以下代码段:


还说自己写的脚本,bug出来跟mike的一毛一样

学习编程中的Ben 发表于 2023-8-4 13:48:26

tyh小号 发表于 2023-8-4 13:41
还说自己写的脚本,bug出来跟mike的一毛一样

我和mike的代码一样的
你可以问他
我们两一起改的

tyh小号 发表于 2023-8-4 13:48:58

学习编程中的Ben 发表于 2023-8-4 13:48
我和mike的代码一样的
你可以问他
我们两一起改的

那你还是改一下正则表达式吧

学习编程中的Ben 发表于 2023-8-4 13:49:25

tyh小号 发表于 2023-8-4 13:48
那你还是改一下正则表达式吧


我们的正则没加Java

学习编程中的Ben 发表于 2023-8-4 13:53:42

给个最佳答案呗!求你了!!!{:10_254:}

Mike_python小 发表于 2023-8-4 13:56:09

对于楼上这种不要脸行为,尽量不要给与最佳答案

mumei2018 发表于 2023-8-4 14:22:28

感谢各位啦 最佳就先到先得了
页: [1]
查看完整版本: 请问idea里数组索引值变红了是咋回事呢请问