Java 找不到符号-但变量在那里

Java 找不到符号-但变量在那里,java,find,symbols,Java,Find,Symbols,我对Java很有经验,但最近我编写了这个程序来对字符串进行排序(请不要介意效率之类的东西)。但我有一个奇怪的错误 代码如下: import java.io.*; class Prog3 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Syst

我对Java很有经验,但最近我编写了这个程序来对字符串进行排序(请不要介意效率之类的东西)。但我有一个奇怪的错误

代码如下:

import java.io.*;
class Prog3
{
  public static void main(String[] args) throws IOException
  {
    BufferedReader br = new BufferedReader(new 
    InputStreamReader(System.in));
    System.out.print("Enter a String: ");
    String s = br.readLine().toUpperCase();
    String st = "", finalStr = "";
    int count = 1, arI = 0;
    char t = s.charAt(s.length()-1);
    if(!(t=='.'||t=='?'||t=='!'))
    {
      System.out.print("Invalid Input!");
      System.exit(0);
    }
    for(int i = 0; i < s.length(); i++)
    {
      char ch = s.charAt(i);
      if(ch==' ')
      {
        count++;
      }
    }
    String[] ar = new String[count];
    for (int i = 0; i < s.length(); i++)
    {
      char ch = s.charAt(i);
      if(ch!=' '&&ch!='.'&&ch!='?'&&ch!='!')
      {
        st += ch;
      }
      else
      {
        ar[arI++] = st;
        st = " ";
      }
    }
    for ( int i = 0; i < ar.length-1; i++);
    {
      for ( int j = 0; j < ar.length-1-i; j++);
      {
        if (ar[j].compareTo(ar[j+1])>0)
        {
          String temp = ar[j];
          ar[j] = ar[j+1];
          ar[j+1] = temp;
        }
      }
      finalStr = ar[ar.length-1-i] + " " + finalStr;
    }
    System.out.println("Length: " + count);
    System.out.println("Rearranged Sentence:\n" + ar[0] + " " + finalStr);
  }
}
import java.io.*;
课程进展3
{
公共静态void main(字符串[]args)引发IOException
{
BufferedReader br=新的BufferedReader(新的
InputStreamReader(System.in));
System.out.print(“输入字符串:”);
字符串s=br.readLine().toUpperCase();
字符串st=“”,finalStr=“”;
int count=1,arI=0;
chart=s.charAt(s.length()-1);
如果(!(t='.|t='?'| t=='!'))
{
系统输出打印(“无效输入!”);
系统出口(0);
}
对于(int i=0;i0
{
字符串温度=ar[j];
ar[j]=ar[j+1];
ar[j+1]=温度;
}
}
finalStr=ar[ar.length-1-i]+“”+finalStr;
}
System.out.println(“长度:“+计数”);
System.out.println(“重新排列的句子:\n”+ar[0]+“”+finalStr);
}
}
但我仍然在第41行出现“找不到符号”错误,以此类推:

Prog3.java:41: error: cannot find symbol
      for ( int j = 0; j < ar.length-1-i; j++);
                                       ^
  symbol:   variable i
  location: class Prog3
Prog3.java:43: error: cannot find symbol
        if (ar[j].compareTo(ar[j+1])>0)
                               ^
  symbol:   variable j
  location: class Prog3
Prog3.java:43: error: cannot find symbol
        if (ar[j].compareTo(ar[j+1])>0)
               ^
  symbol:   variable j
  location: class Prog3
Prog3.java:45: error: cannot find symbol
          String temp = ar[j];
                           ^
  symbol:   variable j
  location: class Prog3
Prog3.java:46: error: cannot find symbol
          ar[j] = ar[j+1];
             ^
  symbol:   variable j
  location: class Prog3
Prog3.java:46: error: cannot find symbol
          ar[j] = ar[j+1];
                     ^
  symbol:   variable j
  location: class Prog3
Prog3.java:47: error: cannot find symbol
          ar[j+1] = temp;
             ^
  symbol:   variable j
  location: class Prog3
Prog3.java:50: error: cannot find symbol
      finalStr = ar[ar.length-1-i] + " " + finalStr;
                                ^
  symbol:   variable i
  location: class Prog3
8 errors
Prog3.java:41:错误:找不到符号
对于(int j=0;j0
^
符号:变量j
地点:Prog3级
Prog3.java:43:错误:找不到符号
如果(ar[j]),比较(ar[j+1])>0
^
符号:变量j
地点:Prog3级
Prog3.java:45:错误:找不到符号
字符串温度=ar[j];
^
符号:变量j
地点:Prog3级
Prog3.java:46:错误:找不到符号
ar[j]=ar[j+1];
^
符号:变量j
地点:Prog3级
Prog3.java:46:错误:找不到符号
ar[j]=ar[j+1];
^
符号:变量j
地点:Prog3级
Prog3.java:47:错误:找不到符号
ar[j+1]=温度;
^
符号:变量j
地点:Prog3级
Prog3.java:50:错误:找不到符号
finalStr=ar[ar.length-1-i]+“”+finalStr;
^
符号:变量i
地点:Prog3级
8个错误

如果我愚蠢地错过了一些愚蠢的事情,那么我非常抱歉。

你有
在for循环之后,有效地关闭了i和j的作用域

for ( int i = 0; i < ar.length-1; i++);
for ( int j = 0; j < ar.length-1-i; j++);
for(inti=0;i
在循环行的末尾有分号(
-1;i++)),导致循环结束。投票结束是一个打字错误。非常感谢。我真不敢相信我错过了。现在我感到很尴尬。我们每天至少在这里用某种语言看到一次。这很常见。请记住这一点。一个建议:使用IDE的自动格式化。至少Eclipse在按下Ctrl-Shift-F后清楚地显示了这个问题:循环体只是分号,在它自己的行上缩进。