【问题标题】:when I return an array, I get a "cannot find symbol" error当我返回一个数组时,出现“找不到符号”错误
【发布时间】:2013-12-30 19:57:21
【问题描述】:

我正在创建一个程序,其中用户(教师)输入一堆百分比成绩,然后对这些成绩进行分析,然后 outputBox 打印出平均值、最小值/最大值、范围以及“级别”的成绩数量R'、'Level 1'、'Level 2' 等等。

我面临的问题是将等级分为不同级别的方法。 当我尝试将数组返回到主方法并尝试将其打印到输出时,我收到数组错误,提示“找不到符号”

import java.util.Arrays.*;



public Integer[] Levels(){
Integer[] levelCount = {0,0,0,0,0};
int mark = Integer.parseInt(markInput.getText());

int i;
for (i=0; i<levelCount.length;i++ )
{
    if (mark <50){
        levelCount[0] = levelCount[0]+1;
    }
    else if ((mark >= 50) && (mark <60)){
        levelCount[1] = levelCount[1]+1;
    }
    else if ((mark >=60) && (mark<70)){
        levelCount[2] = levelCount[2]+1;
    }
    else if ((mark >=70)&&(mark<80)){
        levelCount[3] = levelCount[3]+1;
    }
    else if ((mark >=80) && (mark<=100)){
        levelCount[4] = levelCount[4]+1;

    }
}

return levelCount;

所以,当我使用我的主要方法打印出所有信息时,我应该将 levelCount 数组放入另一个数组中,我这样做了。这是我所拥有的:

String [] level = {"\nNumber at Level R: " + Levels(levelCount[0]), 
"\nNumber at Level 1: " +Levels(levelCount[1]), 
"\nNumber at Level 2: " + Levels(levelCount[2]), 
"\nNumber at Level 3: " + Levels(levelCount[3]),
"\nNumber at Level 4: " + Levels(levelCount[4])};

所以我的大难题是数组levelCount 显示错误'cannot find symbol'。 无论我尝试什么,我都会继续收到此错误。

我觉得答案非常明显,但是我在网上搜索了可以帮助我解决这个问题的东西,但似乎没有任何效果,我一直收到同样的错误。

【问题讨论】:

  • 您使用的是什么 IDE?请显示堆栈跟踪
  • 您知道+ 符号,当您谈论字符串时,是连接而不是加法,对吧?所以 "0" + 1 不会产生你认为的结果。
  • 你(显然)没有方法 Levels() 需要一个 String,当你调用 Levels(levelCount[0]) 时,这是你正在寻找的。​​span>
  • 除非您有意构建看起来像"0111...11" 的字符串,否则levelCount[0]+1 代码不会按照您的想法去做。
  • Levels()中检查levelCount[5] = levelCount[5]+1;这一行

标签: java arrays return output


【解决方案1】:

Integer[] levelCount = {0,0,0,0,0}; 改为

Integer[] levelCount = {0,0,0,0,0,0};

或者删除levelCount[5] = levelCount[5]+1;

在上述行中,您尝试读取 6th (index 5) element ,但您声明的数组大小为 5(即最大索引 4)

【讨论】:

    【解决方案2】:

    您的方法 Levels 不接受任何参数,因此当您尝试在 main 方法中创建 String 数组时,将无法编译。您的 Levels 方法也返回 String[]。尝试像这样改变方法的使用:

    int[] levelCount = Levels();    
    String [] level = {"\nNumber at Level R: " + levelCount[0], 
    "\nNumber at Level 1: " + levelCount[1], 
    "\nNumber at Level 2: " + levelCount[2], 
    "\nNumber at Level 3: " + levelCount[3],
    "\nNumber at Level 4: " + levelCount[4]};
    

    并按照 Asfab 的建议将数组更改为 int 或 Integer。

    【讨论】:

    • 这解决了问题,除了现在我的输出显示“R”级别或“4”级别有 5 个标记,而所有其他级别显示 0,即使这不是真的。
    • Levels 的输入似乎是一个标记,而计数是通过循环遍历您的 levelCount 数组完成的,该数组始终为 5。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多