Эта переменная выходит за рамки, когда вы пытаетесь использовать ее внутри метода 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_ переменной в методе' основной() 'и, таким образом, не виден в методе' indexCities() '- Я предлагаю вам читать в переменных областях. чтобы исправить это, либо передайте 'nameCity' в качестве второго параметра, либо поместите сканер в' indexCities() ', в зависимости от ваших потребностей. – Thomas
похоже, что вы забыли оператор 'return' в' indexCities() '. Из-за этого компилятор может получить bitchy ... –