Пользователь должен вводить от 2 до 4 заглавных букв и просить пользователя ввести еще раз, пока это не произойдет. Когда я запускаю программу, если пользователь вводит более 4 букв, программа попросит пользователя ввести еще раз, но если он введет строчные буквы, она продолжит выполнение программы. Нужен ли 2D-массив? Любая помощь приветствуется. Спасибо
public static String info() {
Scanner sc = new Scanner(System.in);
char ch;
System.out.println("Course ID Generatorn--------------------------");
System.out.println("Please Enter Course Information:");
boolean lower = false;
String code = "";
while (true) {
System.out.print("Course Code (only capital letters with a length between 2 and 4):");
code = sc.nextLine();
if (code.length() >= 2 & code.length() <= 4) {
break;
} else {
System.out.println("Course Code length was not between 2 and 4, Please try again");
}
for (int i = 0; i < code.length(); i++) {
ch = code.charAt(i);
if (Character.isUpperCase(ch)) {
lower = false;
break;
} else if (lower == true) {
System.out.println("Course Code must only have capital letters, please try again");
}
}
}
sc.close();
return ("");
}
1 ответ
Я немного изменил ваш код. Вот результаты одного из моих тестовых запусков.
Course ID Generator
--------------------------
Please Enter Course Information:
Course Code (only capital letters with a length between 2 and 4): 1223
Course Code must only have capital letters, please try again
Course Code (only capital letters with a length between 2 and 4): asd
Course Code must only have capital letters, please try again
Course Code (only capital letters with a length between 2 and 4): ASDFGH
Course Code length was not between 2 and 4, Please try again
Course Code (only capital letters with a length between 2 and 4): QWE
QWE
Вот измененный код.
import java.util.Scanner;
public class CourseCodeCheck {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(info(sc));
sc.close();
}
public static String info(Scanner sc) {
System.out.println("Course ID Generatorn--------------------------");
System.out.println("Please Enter Course Information:");
String message = "Initial";
String code = "";
while (!message.isEmpty()) {
if (!message.equals("Initial")) {
System.out.println(message);
}
System.out.print("Course Code (only capital letters "
+ "with a length between 2 and 4): ");
code = sc.nextLine();
message = checkLength(code);
if (message.isEmpty()) {
message = checkUpperCase(code);
}
}
return code;
}
private static String checkLength(String code) {
String output = "";
if (code.length() < 2 || code.length() > 4) {
output = "Course Code length was not between "
+ "2 and 4, Please try again";
}
return output;
}
private static String checkUpperCase(String code) {
String output = "";
for (int i = 0; i < code.length(); i++) {
char ch = code.charAt(i);
if (Character.isAlphabetic(ch) && Character.isUpperCase(ch)) {
} else {
output = "Course Code must only have capital "
+ "letters, please try again";
break;
}
}
return output;
}
}
Основные изменения, которые я сделал, заключались в перемещении Scanner
вне info
метод, поместите каждое условие в отдельный метод, проверьте алфавитный и верхний регистр и используйте пустой String
чтобы выйти из цикла while, когда ошибок не было.
Логическое И в if
утверждение — двойной амерсанд (&&). Логическое ИЛИ в if
заявление есть ||.
Обратите внимание, что вопросы, связанные с кодом, который работает не так, как задумано, на этом сайте не по теме. Если OP редактирует свое сообщение, чтобы решить проблему и сделать свое сообщение по теме, они сделают ваш ответ спорным. На такие вопросы рекомендуется не отвечать.. Совет: нужно ответить на множество вопросов по теме; вы быстрее заработаете себе репутацию, если проанализируете код в вопросах, которые получат большее количество просмотров из-за того, что они соответствуют теме.
— БУДЕТ ONᴇᴌᴀ