變量超出範圍,當您嘗試使用它的方法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(nameCity, cities);
}
public static void indexCities(String copyOfNameCity, String cities[]){
for (int i = 0; i < cities.length; i++) {
if(copyOfNameCity.equals(cities[i])) {
System.out.println(i);
break;
}
}
}
}
您可以通過使得該方法返回一個值改善。就像這樣:
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();
int cityIndex = indexCities(nameCity, cities);
System.out.println(cityIndex == -1 ? "City not found" : "City found in index " + cityIndex);
}
public static int indexCities(String nameCity, String cities[]){
for (int i = 0; i < cities.length; i++) {
if(nameCity.equals(cities[i])) {
return i;
}
}
return -1;
}
}
另一種方法是:
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class test2 {
public static void main(String[] args) {
String cities[] = {"Vierzon", "Salbris", "Nouans", "LB", "LFSA", "Orleans"};
Scanner input = new Scanner(System.in);
System.out.print("Enter the name of city to be searched -> ");
String nameCity = input.nextLine();
int cityIndex = indexCities(nameCity, cities);
System.out.println(cityIndex == -1 ? "City not found" : "Found at position " + cityIndex);
input.close();
}
public static int indexCities(String cityName, String cities[]) {
List<String> cityList = Arrays.asList(cities);
return cityList.indexOf(cityName);
}
}
'nameCity'是方法的_local_變量'的main()',因此是不可見的方法'indexCities()' - 我建議你閱讀變量作用域。要麼修復它,要麼傳入'nameCity'作爲第二個參數,要麼將掃描器放在'indexCities()'裏面,以滿足您的需求。 – Thomas
似乎你已經忘記了'indexCities()'中的'return'語句。編譯器可能因此而變得bit ... ...... –