Я сделал программу, которая запрашивает полное имя, адрес и т. д., Я хочу, чтобы программа определяла, совпадают ли два полных имени. У меня уже есть оператор if else, который определяет, совпадает ли полное имя, но я продолжаю получать ошибку в возвращаемой части. Я хочу снова вернуться в процесс ввода имени, но программа продолжает переходить к нужному мне адресу.
пример вывода
1.Ваше имя: Джерико
1.Ваше второе имя: Манаранг
1.Ваша фамилия: Наварро
ввод барангай .... и т. д.
2.Ваше имя: Джерико
2.Ваше второе имя: Манаранг
2. Ваша фамилия: Наварро
(ошибка, попробуйте еще раз)
2. Ваше имя:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("How many names do you like to enter? ");
int user = input.nextInt();
String DATA[][][] = new String[user][4][3];
for(int x=0;x<user;x++){
System.out.print("\n" + (x+1) +".Enter your first name: ");
DATA[x][0][0] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your midle name: ");
DATA[x][0][1] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your last name: ");
DATA[x][0][2] = new Scanner(System.in).nextLine();
for(int y=0;y<user;y++){
if (x == y){
}
else if (DATA[x][0][0].equals(DATA[y][y][0]) && DATA[x][0][1].equals(DATA[y][y][1]) && DATA[x][0][2].equals(DATA[y][y][2])){
System.out.println("Ops! Your name is already inputed.");
System.out.println("Please Try again.");
x-=1;
break;
}
}
System.out.print("\n" +(x+1) +".Enter your barangay: ");
DATA[x][1][0] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your city: ");
DATA[x][1][1] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your province: ");
DATA[x][1][2] = new Scanner(System.in).nextLine();
System.out.print("\n" +(x+1) +".Enter your mailing address: ");
DATA[x][2][0] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your contact number: ");
DATA[x][2][1] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your email address: ");
DATA[x][2][2] = new Scanner(System.in).nextLine();
System.out.print("\n" +(x+1) +".Enter your elementary school: ");
DATA[x][3][0] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your secondary school: ");
DATA[x][3][1] = new Scanner(System.in).nextLine();
System.out.print((x+1) +".Enter your tertiary: ");
DATA[x][3][2] = new Scanner(System.in).nextLine();
}
}
}
Затем прочтите минимальный воспроизводимый пример и объясните нам Какие, как выглядит ошибка. «Я получаю сообщение об ошибке» - это ничем, с чем мы не можем помочь.
И напоследок: используйте только теги соответствующие. Для вашего вопроса совершенно не имеет значения, что вы использовали netbeans для редактирования исходного кода. У вас есть проблема с Java, простая и понятная.
DATA[y][y][0] - это опечатка?
Сэр, я знаю только основы, этот код - наша деятельность в нашей школе. нам разрешено использовать только основы, такие как оператор if, цикл for, массив
Конечно. Но все же: например, вы все равно можете использовать более качественное именование.




В этом коде много проблем. И это совсем не лучший способ сделать это. Но поскольку вы новичок в этом и все еще играете с java, сейчас вы можете внести подобное изменение в свой код и заставить его работать.
import java.util.Scanner;
public class Main {
static boolean flag;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("How many names do you like to enter? ");
int user = input.nextInt();
String DATA[][][] = new String[user][4][3];
for (int x = 0; x < user; x++) {
flag = false;
System.out.print("\n" + (x + 1) + ".Enter your first name: ");
DATA[x][0][0] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your midle name: ");
DATA[x][0][1] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your last name: ");
DATA[x][0][2] = new Scanner(System.in).nextLine();
for (int y = 0; y < user; y++) {
if (x == y) {
} else if (DATA[x][0][0].equals(DATA[y][y][0]) && DATA[x][0][1].equals(DATA[y][y][1]) && DATA[x][0][2].equals(DATA[y][y][2])) {
System.out.println("Ops! Your name is already inputed.");
System.out.println("Please Try again.");
x -= 1;
flag = true;
break;
}
}
if (flag){
continue;
}
System.out.print("\n" + (x + 1) + ".Enter your barangay: ");
DATA[x][1][0] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your city: ");
DATA[x][1][1] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your province: ");
DATA[x][1][2] = new Scanner(System.in).nextLine();
System.out.print("\n" + (x + 1) + ".Enter your mailing address: ");
DATA[x][2][0] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your contact number: ");
DATA[x][2][1] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your email address: ");
DATA[x][2][2] = new Scanner(System.in).nextLine();
System.out.print("\n" + (x + 1) + ".Enter your elementary school: ");
DATA[x][3][0] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your secondary school: ");
DATA[x][3][1] = new Scanner(System.in).nextLine();
System.out.print((x + 1) + ".Enter your tertiary: ");
DATA[x][3][2] = new Scanner(System.in).nextLine();
}
}
}
Опять же, это всего лишь небольшой прием для работы с этим кодом. Это неправильный путь. Вам необходимо провести рефакторинг всего кода, чтобы все было сделано правильно. :)
@JericoMNavarro Тогда не забудьте принять ответ, чтобы
Согласитесь с Песок. Для меня лучше использовать альтернативный подход, потому что читать ваше решение действительно сложно. Это мое предложение. Думаю, вам могло быть понятнее. P.S. За более чем 15 лет разработки я пару раз сталкивался с массивами более 2D. Используйте класс вместо 3D ... массивов.
private static final class User {
private final String firstName;
private final String middleName;
private final String lastName;
private String barangay;
private String city;
private String province;
private String mailingAddress;
private String contactNumber;
private String email;
private String elementarySchool;
private String secondarySchool;
private String tertiary;
public User(String firstName, String middleName, String lastName) {
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!(obj instanceof User))
return false;
User user = (User)obj;
return Objects.equals(firstName, user.firstName) && Objects.equals(middleName, user.middleName)
&& Objects.equals(lastName, user.lastName);
}
@Override
public int hashCode() {
return Objects.hash(firstName, middleName, lastName);
}
}
private static User getUser(Scanner scan, int i) {
System.out.print("\n" + i + ". Enter your first name: ");
String firstName = scan.next();
System.out.print(i + ". Enter your middle name: ");
String middleName = scan.next();
System.out.print(i + ". Enter your last name: ");
String lastName = scan.next();
return new User(firstName, middleName, lastName);
}
private static User getUserAdditionalInfo(User user, Scanner scan, int i) {
System.out.print("\n" + i + ". Enter your barangay: ");
user.barangay = scan.nextLine();
System.out.print(i + ". Enter your city: ");
user.city = scan.nextLine();
System.out.print(i + ". Enter your province: ");
user.province = scan.nextLine();
System.out.print("\n" + i + ". Enter your mailing address: ");
user.mailingAddress = scan.nextLine();
System.out.print(i + ". Enter your contact number: ");
user.contactNumber = scan.nextLine();
System.out.print(i + ". Enter your email address: ");
user.email = scan.nextLine();
System.out.print("\n" + i + ". Enter your elementary school: ");
user.elementarySchool = scan.nextLine();
System.out.print(i + ". Enter your secondary school: ");
user.secondarySchool = scan.nextLine();
System.out.print((i + 1) + ".Enter your tertiary: ");
user.tertiary = scan.nextLine();
return user;
}
private static Set<User> getUsers() {
try (Scanner scan = new Scanner(System.in)) {
System.out.print("How many names do you like to enter? ");
Set<User> users = new LinkedHashSet<>();
for (int i = 1, total = scan.nextInt(); i <= total; ) {
User user = getUser(scan, i);
if (users.contains(user)) {
System.out.println("Ops! Your name is already inputed.");
System.out.println("Please Try again.");
} else {
users.add(getUserAdditionalInfo(user, scan, i));
i++;
}
}
return Collections.unmodifiableSet(users);
}
}
public static void main(String[] args) {
Set<User> users = getUsers();
}
Здесь так много всего плохого. Во-первых: именование ... имена переменных переходят в camelCase в java. ДАННЫЕ были бы какими-то постоянными. Это тоже имя, которое ничего не говорит. Скорее назовите его userData. Затем: ваши счетчики цикла должны называться i, j ... x и y подразумевают (по соглашению), что они являются значениями float / double. i / j - счетчики петель. Давай с этим. Затем: создайте пользователя класс, который имеет эти свойства как поля. Использование ТАБЛИЦЫ, где каждая строка представляет пользователя, противоположно тому, что вы делаете в ООП. А затем вместо того, чтобы иметь многослойную таблицу строк и столбцов, просто создайте массив
User[] users. Сделанный.