在以下程序中,应假定用户输入String(城市名称),并且程序应返回数组中相应城市的索引。

但是在子例程indexCities中出现以下错误:


  “ nameCity无法解析”。


我想这是变量作用域的问题,但我不知道该怎么做。
谢谢你的帮助。

import java.util.Scanner;

public class villes {

    public static void main(String[] args) {
        String cities[] = {"Vierzon","Salbris","Nouans","LB","LFSA","Orleans"};
        Scanner input = new Scanner(System.in);
        String nameCity = input.nextLine();
        indexCities(cities);
    }

    public static int indexCities(String cities[]) {
        for (int i = 0; i < cities.length; i++) {
            if(nameCity.equals(cities[i])) {
                System.out.println(i);
                break;
            }
        }
    }

}

最佳答案

nameCity是main方法中的局部变量。您不能在方法之外访问它。
一种选择是将nameCity也作为参数传递给indexCities方法。另外,由于您不返回任何内容,因此indexCities方法的返回类型应该为空。

public static void main(String[] args) {

    String cities[] = {"Vierzon","Salbris","Nouans","LB","LFSA","Orleans"};

    Scanner input = new Scanner(System.in);

    String nameCity = input.nextLine();

    indexCities(cities, nameCity);

}

public static void indexCities(String cities[], String nameCity){

    for (int i = 0; i < cities.length; i++) {
        if(nameCity.equals(cities[i])) {
            System.out.println(i);
            break;
        }
    }
}

10-04 21:27