尝试使用局部变量时,为什么会出现"无法找到符号"错误?

Snu*_*ber 0 java variables compiler-errors

这是我的代码.它应该采用两个字符串并逐个字符地比较它们的差异.

import java.util.Scanner;
public class Positions {
 public static void main(String[] args){
  Scanner scan = new Scanner(System.in);
  String first = scan.next();
  String second = scan.next();
  if(first.length()>second.length()){
     int length = first.length();
  }else{
     int length = second.length();
  }
  for(int i=0; i<length; i++){
     if(first.charAt(i)!=second.charAt(i)){
        System.out.print(i+" "+first.charAt(i)+" "+second.charAt(i));
     }
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

我尝试编译时收到此错误:

 ----jGRASP exec: javac -g Positions.java
Positions.java:12: error: cannot find symbol
      for(int i=0; i < length; i++){
                       ^
  symbol:   variable length
  location: class Positions
1 error

 ----jGRASP wedge: exit code for process is 1.
 ----jGRASP: operation complete.
Run Code Online (Sandbox Code Playgroud)

rge*_*man 7

您的length变量声明并且在每一种情况下初始化ifelse然后立即丢弃超出范围时的块的端部.

if在每种情况下在它之前声明并初始化它,因此它仍然在for进一步向下循环的范围内.

int length;
if(first.length()>second.length()){
   length = first.length();
}else{
   length = second.length();
}
Run Code Online (Sandbox Code Playgroud)