我引用这个数组位置错了吗?

时间:2015-08-03 04:32:37

标签: java

您好我正在为更大的程序编写方法,但我不断收到无法找到符号的错误。请帮忙!

 public static int maxInc (char []ch)
 {
  int current = 1;
  int max = 1;

  if (ch.length == 0)
  {
     return 0;
  }
  else if (ch.length == 1)
  {
     return 1;
  }
  else
  {
     for (int i = 1; i < ch.length; i++);
     {
        if(ch[i] >= ch[i-1]) //the error is at ch[i] and ch[i-1]
        {
           current++;
           if(current > max)
              max = current;
           else 
              current = 1;   
        }
     } 
     return max;
  }         
   }

3 个答案:

答案 0 :(得分:1)

这一行有一个半结肠:

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

将其删除,然后按以下方式行:

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

虽然有一个分号,但是什么都没发生,循环发生了什么。它只是一个声明。下面的代码就像第二个例子一样:

此示例代码

for (int i = 1; i < ch.length; i++);
{
     if(ch[i] >= ch[i-1])
      {
          current++;
          if(current > max)
              max = current;
          else 
              current = 1;   
       }
} 

会像这样工作

for (int i = 1; i < ch.length; i++)
{
      //Nothing is happening
}

// i will give error as the declaration was in the above loop
if(ch[i] >= ch[i-1])
{
     current++;
     if(current > max)
        max = current;
      else 
        current = 1;   
 }

答案 1 :(得分:0)

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

问题在于,分号。去掉它。这样,你的for循环有效地看起来像......

 for (int i = 1; i < ch.length; i++) { 
    // do nothing
}

&#34; For&#34;执行下一个块,但是你用分号结束了那个块。

答案 2 :(得分:0)

我认为这一行会给出错误:

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

按以下方式修改

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

如果没有,请告诉我哪一行给你错误。