如何修复编写代码的java运行时错误以检查UPC是否有效?
我想编写一个java程序,通过只使用“嵌套while循环”和“分支:if-else”来检查UPC代码是否有效。以下是检查UPC是否有效的公式:如何修复编写代码的java运行时错误以检查UPC是否有效?,java,branch,nested-loops,Java,Branch,Nested Loops,我想编写一个java程序,通过只使用“嵌套while循环”和“分支:if-else”来检查UPC代码是否有效。以下是检查UPC是否有效的公式: 从左到右,在奇数位置添加数字 (从1开始计数)并将结果乘以3 从左到右,将偶数位置的数字加到总数中 在步骤1中计算 取步骤2的结果并计算 除以10的余数(结果模10)。如果剩余的 不是零,从10中减去余数得到校验位。 如果余数为零,则校验位应为0 注意:代码将一直询问,直到收到空白输入 我输入了数字,但没有显示任何内容,所以我该怎么办,谢谢 Sc
Scanner in = new Scanner(System.in);
System.out.println("Enter a UPC (enter a blank line to quit): ");
String upc = in.nextLine();
while (upc.length() <12 && upc.length()>0) {
int even= Character.getNumericValue(upc.charAt(0))+Character.getNumericValue(upc.charAt(2))+Character.getNumericValue(upc.charAt(4))+Character.getNumericValue(upc.charAt(6))+Character.getNumericValue(upc.charAt(8))+Character.getNumericValue(upc.charAt(10));
int odd= Character.getNumericValue(upc.charAt(1))+Character.getNumericValue(upc.charAt(3))+Character.getNumericValue(upc.charAt(5))+Character.getNumericValue(upc.charAt(7))+Character.getNumericValue(upc.charAt(9))+Character.getNumericValue(upc.charAt(11));
int sum= even*3+odd;
int cd= Character.getNumericValue(upc.charAt(11));
if (sum%10 !=0) {
int sub= 10-(sum%10);
if (sub==cd) {
System.out.println("Check digit should be: " +sub);
System.out.println("Check digit is: "+ cd);
System.out.println("valid");
System.out.println("Enter a UPC (enter a blank line to quit): ");
upc= in.nextLine();
}
else {
System.out.println("Check digit should be: " +sub);
System.out.println("Check digit is: "+ cd);
System.out.println("not valid");
System.out.println("Enter a UPC (enter a blank line to quit): ");
upc= in.nextLine();
}
}
}
if (upc.length()==0) {
System.out.println("Goodbye");
}
Scanner-in=新的扫描仪(System.in);
System.out.println(“输入UPC(输入要退出的空行):”;
字符串upc=in.nextLine();
while(upc.length()0){
int偶数=Character.getNumericValue(upc.charAt(0))+Character.getNumericValue(upc.charAt(2))+Character.getNumericValue(upc.charAt(4))+Character.getNumericValue(upc.charAt(6))+Character.getNumericValue(upc.charAt(8))+Character.getNumericValue(upc.charAt(10));
int奇数=Character.getNumericValue(upc.charAt(1))+Character.getNumericValue(upc.charAt(3))+Character.getNumericValue(upc.charAt(5))+Character.getNumericValue(upc.charAt(7))+Character.getNumericValue(upc.charAt(9))+Character.getNumericValue(upc.charAt(11));
整数和=偶数*3+奇数;
int cd=Character.getNumericValue(upc.charAt(11));
如果(总和%10!=0){
int sub=10-(总和%10);
if(sub==cd){
System.out.println(“校验位应为:“+sub”);
System.out.println(“校验位为:“+cd”);
System.out.println(“有效”);
System.out.println(“输入UPC(输入要退出的空行):”;
upc=in.nextLine();
}
否则{
System.out.println(“校验位应为:“+sub”);
System.out.println(“校验位为:“+cd”);
System.out.println(“无效”);
System.out.println(“输入UPC(输入要退出的空行):”;
upc=in.nextLine();
}
}
}
如果(upc.length()==0){
System.out.println(“再见”);
}
这是一个非常简单的修复程序,可以让它运行。但是您仍然需要添加大量代码,因此它会循环,并且还可以解释用户输入的空白字符串或不是12个字符的字符串
简单的修复程序如下所示
Enter
?出现了什么运行时错误?发布完整的堆栈跟踪?在我按Enter键后,它只显示黑屏。在debugger下运行它,您将能够看到逐步执行。我使用eclipse运行调试,它仍然没有显示任何内容,这很奇怪,他说re在命令中运行时是什么样子:非常感谢您的解释!现在我很清楚是的,我在循环中更改了一些变量,就好像用户输入的数字少于或多于12位一样,它也会显示一条消息,让他们再次输入!
import java.util.Scanner;
public class UPC_Check {
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 upc = in.nextLine();
while (upc.length() <= 12 && upc.length()>0) {
int odd= Character.getNumericValue(upc.charAt(0))+Character.getNumericValue(upc.charAt(2))+Character.getNumericValue(upc.charAt(4))+Character.getNumericValue(upc.charAt(6))+Character.getNumericValue(upc.charAt(8))+Character.getNumericValue(upc.charAt(10));
int even= Character.getNumericValue(upc.charAt(1))+Character.getNumericValue(upc.charAt(3))+Character.getNumericValue(upc.charAt(5))+Character.getNumericValue(upc.charAt(7))+Character.getNumericValue(upc.charAt(9));
int sum= odd*3+even;
int cd= Character.getNumericValue(upc.charAt(11));
if (sum%10 !=0) {
int sub= 10-(sum%10);
if (sub==cd) {
System.out.println("Check digit should be: " +sub);
System.out.println("Check digit is: "+ cd);
System.out.println("valid");
System.out.println("Enter a UPC (enter a blank line to quit): ");
upc= in.nextLine();
}
else {
System.out.println("Check digit should be: " +sub);
System.out.println("Check digit is: "+ cd);
System.out.println("not valid");
System.out.println("Enter a UPC (enter a blank line to quit): ");
upc= in.nextLine();
}
}
}
if (upc.length()==0) {
System.out.println("Goodbye");
}
}