Я делаю это как домашнее задание для моего первого урока CS, так что я новичок в Java. Цель состоит в том, чтобы создать программу, которая проверяет ввод пользователя для указанной переменной Java. Есть три условия / вывода:
- «Недопустимый» (пробелы не допускаются, должны начинаться с буквы)
- «Допустимо, но используется плохой стиль» (следует использовать только буквы или цифр)
- «Хорошо!»
Если я запустил эту программу и наберу что-то вроде «переменная» для первого l oop, она будет go до конца и напечатана Хорошо!" к концу. И когда программа снова спросит, и я наберу что-то вроде «4variable», она вернет «Illegal» - это имеет смысл. Проблема возникает сразу после этого. Если я снова наберу следующую переменную, например, «переменная», она вернет «Illegal», потому что все еще думает, что в позиции первого символа есть di git. Когда я отлаживаю, он показывает логическое значение "number", установленное в 'true', даже если оно false. Я не могу заставить его отказаться от предыдущей итерации l oop.
Вот мой код:
import java.util.Scanner;
public class IdentifierTestThree {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String userVariable = "";
char ch = ' ';
boolean space = false;
boolean number = false;
boolean capital = false;
//boolean specialCharacter = false;
boolean style = false;
// State what this program does
System.out.println("This program checks to see if a Java variable is legal or not.");
// Get input from user
System.out.println("Enter a variable: ");
userVariable = in .nextLine();
do {
int variableParse = userVariable.length();
for (int i = 0; i < variableParse; i++) {
if ((Character.isLetterOrDigit(userVariable.charAt(i)) == false)) {
style = true;
}
}
// Get the first character
ch = userVariable.charAt(0);
// Check each stipulation
if (Character.isUpperCase(ch)) {
capital = true;
}
if (Character.isDigit(ch)) {
number = true;
}
if (userVariable.contains(" ")) {
space = true;
}
if (space || number || capital) {
System.out.println("Illegal");
} else if (style) {
System.out.println("Legal, but uses poor style.");
} else {
System.out.println("Good!");
}
// Ask the user to enter another variable or end the program
System.out.println("Enter another variable or type 'Q' to quit.");
userVariable = in .nextLine();
} while (!userVariable.equalsIgnoreCase("Q"));
}
}