내 코드에 무한 루프가있어 문제를 해결할 수 없습니다. 또한 빈 줄을 삽입 할 때 색인 오류가 있다고합니다. 도와주세요!UPC 체크 코드 무한 루프를 중지하는 방법
유효한 UPC를 확인하는 첫 번째 단계는 홀수 위치 숫자를 더하고 3을 곱한 다음 그 숫자를 짝수 위치 숫자의 합에 더하는 것입니다. 그런 다음 나머지를 10으로 나눌 때 계산합니다. 나머지가 0이 아닌 경우이 나머지를 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!");
}
}
}
우선 길이를 줄이지 않고 두 번째로 동일한 이름의 변수 이름을 사용하지만 번호 접미사가 다른 경우 배열 (또는 컬렉션)을 사용해야하는 거대한 붉은 깃발이어야합니다. – nmore