java - Java中以数组作为参数的子程序

标签 java arrays scope

在下面的程序中,用户应该输入一个String(一个城市的名称),程序应该返回数组中相应城市的索引。

但是我得到一个错误,在子例程 indexCities 中出现以下消息:

"nameCity cannot be resolved".

我猜这是一个变量作用域的问题,但我不知道我应该怎么做。 感谢您的帮助。

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 方法的返回类型应该为 void,因为您没有返回任何内容。

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;
        }
    }
}

关于java - Java中以数组作为参数的子程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648036/

相关文章:

c++ - C++ 有 move 和删除语义吗?

java - 如何替换 --add-modules java.xml.ws

java - Apache Camel : Risk with Bean component not able to link the bean method at compile time

python - 二进制 numpy 数组之间的快速汉明距离计算

javascript - 进行链接时如何使内部函数不超出主函数范围?

python - 首次使用后重新分配时,局部变量上出现UnboundLocalError

java - Guice 辅助注入(inject)更深的依赖层次结构

java - Android BLE onCharacteristicChanged 未触发

java - 如何全局声明一个数组但稍后设置它的值?

iphone - 如何创建IPA文件?