【问题标题】:What am i doing wrong with arrays in methods?我对方法中的数组做错了什么?
【发布时间】:2017-05-04 14:09:56
【问题描述】:

我不确定我做错了什么。我正在使用 Java,我的控制台说它找不到符号 getBattingAverage.batters(i)。击球手是 15 个名字的数组,在击球和命中前:安东尼·里佐 54 16。

public double getBattingAverage()
   {
   if(atBats > 0)
   return (double) hits / (double) atBats;
  else
   return 0.0; 
   }

public double getHighestBattingAverage()
   {
      for( i = 0; i < batters.length; i++)
         {
            j = getBattingAverage.batters(i);
            if ( maxERA < j)
               maxERA = j;

   }

【问题讨论】:

  • batters 是一个数组而不是一个方法。
  • 参加 Java 编程入门课程。
  • 这里有很多问题——对于一个 SO 问题来说太多了——但是请养成在 if() 块中始终使用大括号的习惯,即使它只是一个语句。你会为自己省去很多困惑。
  • ij 定义在哪里?请说明所有变量的定义位置。

标签: java arrays


【解决方案1】:

这不是有效的 Java - 不会编译。从您的代码中看不出您的意图。

我看到你定义了一个函数 getBattingAverage()。假设您定义了 atBats 并点击了其他地方,那没关系。可能作为包含对象中的实例字段。请在if 语句中使用花括号。

在 getHighestBattingAverage 的 for 循环中,您将击球手视为一个数组。然后你说getBattingAverage.batters(i) 好像getBattingAverage 是一个具有batters() 方法的类的对象。 j 是从哪里来的? maxERA 是从哪里来的?

Java 有出色的文档。这是ArraysLanguage BasicsTutorials HomeAPI Reference 的部分。这就是我自学 Java 的方式。

您可能会发现使用 IntelliJ 之类的 IDE 很有帮助,因为它会在您键入时告诉您错误是什么,并为您提供编写更好代码的提示。祝你学习 Java 好运!

话虽如此,理想的 StackOverflow 问题只有一个问题。这看起来像是您的第一个 Java 程序,而且看起来很努力。但是 StackOverflow 是针对更具体的问题的。诸如“没有任何效果,这是我需要解释的不完整摘录”之类的问题将因过于宽泛而被关闭。事实上,我可能会投票结束这个问题,因为它的形成不够好,或者真的没有一个具体的问题。

【讨论】:

    【解决方案2】:

    这里的语法:

     j = getBattingAverage.batters(i);
    

    应该是 - 对数组元素的方法调用:

    j = batters[i].getBattingAverage();
    

    或 - list 元素上的方法调用。

    j = batters.get(i).getBattingAverage();
    

    或 - 使用数组元素的方法调用

    j = getBattingAverage(batters[i]);
    

    例如。

    但老实说,真正的 答案在这里:不要在语法方面反复试验。学习书籍/教程,了解这些东西应该如何工作。

    【讨论】:

    • 如果我可以问 - 你接受了,后来不接受我的回答。没关系;我只是想知道这是故意的还是偶然的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多