Java错误,必需:char[]找到char

Java错误,必需:char[]找到char,java,arrays,character,Java,Arrays,Character,我用Java制作了一个字符数组 char[]letterGrade={'A','B','C','D','F'} 我试图引用这样的元素 letterGrade[0] 我得到一个错误,说不兼容的类型 所需: 字符[] 找到:char 我在代码的其他地方使用了一个double数组来实现这一点,效果很好。为什么它不适用于字符数组 谢谢 根据您的评论进行更新 public static void method() { double totalEarnedPoints = 1; doubl

我用Java制作了一个字符数组


char[]letterGrade={'A','B','C','D','F'}

我试图引用这样的元素

letterGrade[0]
我得到一个错误,说不兼容的类型

所需: 字符[]

找到:char

我在代码的其他地方使用了一个double数组来实现这一点,效果很好。为什么它不适用于字符数组

谢谢

根据您的评论进行更新

public static void method()
{
    double totalEarnedPoints = 1;
    double totalPossiblePoints = 1;

    double gradePer = 0.0;
    gradePer = (totalEarnedPoints / totalPossiblePoints);
    char[] letterGrade = { 'A', 'B', 'C', 'D','F'};
    if (gradePer >= gradeScale[0])
    {
        letterGrade = char letterGrade(0);
    }
    else if (calcPercent >= gradeCutoffs[1] && calcPercent < gradeCutoffs[0])
    {
        letterGrade= char letterGrade(1);
    }
}
publicstaticvoid方法()
{
双倍总积分=1;
双总可能点=1;
双评分器=0.0;
评分员=(总所得分数/总可能分数);
char[]letterGrade={'A','B','C','D','F'};
如果(分级器>=分级刻度[0])
{
letterGrade=字符letterGrade(0);
}
否则,如果(calcPercent>=成绩截止点[1]&calcPercent<成绩截止点[0])
{
letterGrade=字符letterGrade(1);
}
}

如果目标变量的类型为char,则发布的示例有效,因此我假设您在赋值中做错了什么。可能您正在调用一个需要
char[]
的函数,在这种情况下,您应该使用
funct(letterGrade)
而不使用
[0]

如果您的问题仍然存在,您应该发布更多的代码

更新

我修改了你的代码,让它可以编译。当然,我不知道它应该是什么,所以我不得不做一些假设,但是你应该看看语法应该是怎样的

public static void method()
{
    double totalEarnedPoints = 1;
    double totalPossiblePoints = 1;
    double gradeScale[] = {1, 2, 3};
    double gradeCutoffs[] = {1, 2, 3};
    double gradePer = 0.0;
    char letter;
    double calcPercent = 1;

    gradePer = (totalEarnedPoints / totalPossiblePoints);
    char[] letterGrade = { 'A', 'B', 'C', 'D','F'};
    if (gradePer >= gradeScale[0])
    {
        letter = letterGrade[0];
    }
    else if (calcPercent >= gradeCutoffs[1] && calcPercent < gradeCutoffs[0])
    {
        letter = letterGrade[1];
    }
    else
        letter = 'F';

    System.out.println("Grade:"+letter);
}
publicstaticvoid方法()
{
双倍总积分=1;
双总可能点=1;
双年级量表[]={1,2,3};
双级截止值[]={1,2,3};
双评分器=0.0;
字符字母;
双calcPercent=1;
评分员=(总所得分数/总可能分数);
char[]letterGrade={'A','B','C','D','F'};
如果(分级器>=分级刻度[0])
{
字母=字母等级[0];
}
否则,如果(calcPercent>=成绩截止点[1]&calcPercent<成绩截止点[0])
{
字母=字母等级[1];
}
其他的
字母='F';
系统输出打印项次(“等级:+字母);
}
这对我来说很好:
char[]letterGrade={'A','B','C','D','F'}; 系统输出打印项次(letterGrade[0]); 它输出一个

所以我怀疑这就是你分配给它的。 也许你有:
letterGrade=letterGrade[A]

“我试图用if语句实现它

char[] letterGrade = { 'A', 'B', 'C', 'D','F'}; 
if (calcPercent >= gradeCutoffs[0]) { 
      letterGrade = letterGrade[0];
}
如果你这样做的话。 由于letterGrade的类型为
char[]
,因此不能仅为其分配char。
L.H.S.
值必须为char

required: char[]

found: char 
如果在char[]数据类型中分配char,则会发生这种类型的错误

例:


char[]letterGrade={A','B','C','D','F'};System.out.println(letterGrade[0]);它对我有效,你使用的上下文是什么?请描述一下,你在哪里使用它?你能给出那部分代码吗?是的,我也能做到。我试图让它返回数组中的一个元素作为if-else语句的结果。我不确定我是否喜欢使用系统打印行作为包含5个可能的答案-等级A-F。我试图用if语句实现它,char[]letterGrade={'A','B','C','D','F'};if(calcPercent>=gradeCutoffs[0]){letterGrade=letterGrade[0];我通过使用'System.out.println'引用实际的字母使其工作,但它也打印了10个字符的字母、数字和符号——看起来与我正在尝试打印到屏幕上的代码行完全无关?
public void方法{double gradePer=0.0;gradePer=(totalEarnedPoints/totalPossiblePoints);char[]letterGrade={A',B',C',D',F'};if(gradePer>=gradeScale[0]){letterGrade=char letterGrade(0);}else if(calcPercent>=gradeCutoffs[1]&calcPercent
我修复了您的代码,并将原始版本重新发布到您的问题中,将可编译版本重新发布到我的答案中,这样您就可以对它们进行比较。发布代码示例时,不要在注释中这样做,因为这看起来很糟糕。只需将其编辑到您的答案中即可。
char[] ch = letterGrade[0];