java - 为什么我在尝试使用局部变量时收到 "cannot find symbol"错误?

标签 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));
     }
  }
 }
}

当我尝试编译时出现此错误:

 ----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.

最佳答案

您的 length 变量在 ifelse 的每种情况下都被声明和初始化,然后在 block 结束时因超出范围而立即被丢弃.

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

int length;
if(first.length()>second.length()){
   length = first.length();
}else{
   length = second.length();
}

关于java - 为什么我在尝试使用局部变量时收到 "cannot find symbol"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26069465/

相关文章:

java - 如何迭代链表

c++ - 编程风格 : when to add a variable?

c++ - 如何在 C++ 的 MFC 窗体中访问全局变量

c# - 在哪里存储可编辑的配置参数

java - Java 的 JSON 美化器库

java - 为什么私有(private)数据成员在子类中继承

c - 警告 :"initialization makes pointer from integer without a cast in c

c# - 未知的构建错误

java - 使用 Jlink 在一个平台上为另一个平台创建 Java 运行时镜像

java - Visual Basic,预期语句结束 - 数组?