мой код имеет бесконечный цикл, и я не могу его сломать. Также при вставке пустой строки мне говорят, что произошла ошибка индекса. Пожалуйста помоги!
Первым шагом проверки действительного UPC является сложение нечетных цифр позиции и умножение на три, затем вы добавляете это число к сумме четных цифр позиции. Затем вычислите остаток при делении на 10. Если остаток не равен нулю, вычтите этот остаток из 10, чтобы получить контрольную цифру. Если остаток равен нулю, то контрольная цифра должна быть 0.
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.println("Enter a UPC (enter a blank line to quit): ");
String enterUPC = in.nextLine();
int length = enterUPC.length();
int checkDigit=0;
char char1, char2, char3, char4, char5, char6, char7, char8, char9, char10, char11, char12;
int num1, num2, num3, num4, num5, num6, num7, num8, num9, num10, num11, num12;
char1 = enterUPC.charAt(0);
num1 = Character.getNumericValue(char1);
char2 = enterUPC.charAt(1);
num2 = Character.getNumericValue(char2);
char3 = enterUPC.charAt(2);
num3 = Character.getNumericValue(char3);
char4 = enterUPC.charAt(3);
num4 = Character.getNumericValue(char4);
char5 = enterUPC.charAt(4);
num5 = Character.getNumericValue(char5);
char6 = enterUPC.charAt(5);
num6 = Character.getNumericValue(char6);
char7 = enterUPC.charAt(6);
num7 = Character.getNumericValue(char7);
char8 = enterUPC.charAt(7);
num8 = Character.getNumericValue(char8);
char9 = enterUPC.charAt(8);
num9 = Character.getNumericValue(char9);
char10 = enterUPC.charAt(9);
num10 = Character.getNumericValue(char10);
char11 = enterUPC.charAt(10);
num11 = Character.getNumericValue(char11);
char12 = enterUPC.charAt(11);
num12 = Character.getNumericValue(char12);
while(length > 0) {
//Algorithm Step One and Algorithm Step Two
int stepOne = (num1 + num3 + num5 + num7 + num9 + num11) * 3;
int stepTwo = stepOne + (num2 + num4 + num6 + num8 + num10);
while (length == 12) {
//Algorithm Step Three
if(stepTwo%10!=0) {
checkDigit = 10 - (stepTwo%10);
}
else {
checkDigit = 0;}
System.out.println("Check digit should be : " + checkDigit);
System.out.println("Check digit is: " + num12);
}
}
if(checkDigit == num12) {
System.out.println("UPC is valid");
}
else {
System.out.println("UPC is not valid");
}
if (length == 0){
System.out.println("ERROR! UPC MUST have exactly 12 digits");
}
else{
System.out.print("Goodbye!");
}
}
}