Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按下enter键以获得代码结果后,CMD停止_Java - Fatal编程技术网

Java 按下enter键以获得代码结果后,CMD停止

Java 按下enter键以获得代码结果后,CMD停止,java,Java,这是一个基于图书标识号的程序。现在,当我在CMD中运行它并输入ISBN时,按下enter CMD键后停止,并且不显示结果。此外,它停止接受任何其他输入。下面是我的代码和CMD截图的链接。谢谢 /* 国际标准书号(ISBN)是一个唯一的数字图书标识符,打印在每本书上。 ISBN基于一个10位代码。ISBN在以下情况下是合法的: 1*digit1+2*digit2+3*digit3+4*digit4+5*digit5+6*digit6+7*digit7+8*digit8+9*digit9+10*di

这是一个基于图书标识号的程序。现在,当我在CMD中运行它并输入ISBN时,按下enter CMD键后停止,并且不显示结果。此外,它停止接受任何其他输入。下面是我的代码和CMD截图的链接。谢谢

/*
国际标准书号(ISBN)是一个唯一的数字图书标识符,打印在每本书上。
ISBN基于一个10位代码。ISBN在以下情况下是合法的:
1*digit1+2*digit2+3*digit3+4*digit4+5*digit5+6*digit6+7*digit7+8*digit8+9*digit9+10*digit10可被11整除。
例如:对于ISBN 1401601499,和=1*1+2*4+3*0+4*1+5*6+6*0+7*1+8*4+9*9+10*(=254,可被11整除)。
编写一个程序以:
(i) 以10位整数的形式输入ISBN代码
(ii)输入ISBN不是10位整数,输出消息“非法ISBN”并终止程序。
(iii)如果数字可被11整除,则输出消息“合法ISBN”。如果总和不能被11整除,则输出消息“非法ISBN”。
*/
导入java.util.*;//包名。
班级书号{
公共静态void main(字符串参数[]){
扫描仪sc=新的扫描仪(System.in);
系统输出打印(“输入ISBN:”);
长isbn=sc.nextLong();
长r;
长d=0;
长s=0;
long num=isbn;
while(num!=0)//数字计数逻辑
{
++d;
num=num/10;//删除最后一个数字
}
如果(d==10)
{
while(isbn!=0)
{
r=num%10;//它提取最后一个数字
s=s+r*d--;
num=num/10;
}
如果(s%11==0)
{
System.out.println(“合法ISBN”);
}否则{
System.out.println(“非法ISBN”);
}
}
}//主管道末端
}//下课

我认为您的
while(isbn!=0)
是一个无限循环。如果您不更改体内的
isbn
变量,它将无限期运行。

您需要在第二个循环开始时将
num
重置为
isbn
。 此外,当ISBN的长度不是10时,您应该给出一条错误消息

import java.util.*; // package name. 

public class BookNumber {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter the ISBN : ");
        long isbn = sc.nextLong();
        long r;
        long d = 0;
        long s = 0;
        long num = isbn;
        while (num != 0) //digit count logic 
        {
            ++d;
            num = num / 10; //it remove the last digit 
        }
        if (d == 10)
        {
            num = isbn;
            while (num != 0)
            {
                r = num % 10; //it extract the last digit
                s = s + r * d--;
                num = num / 10;
            }
            if (s % 11 == 0)
            {
                System.out.println("Legal ISBN");
            } else {
                System.out.println("Illegal ISBN");
            }
        } else {
            System.out.println("Illegal ISBN");
        }
    } // End of main 
} //End of class

while(isbn!=0)
loop不会更改甚至访问
isbn
-变量。根据该网站:截至2006年12月底,isbn的长度为10位,但自2007年1月1日起,它们现在总是由13位组成。你是对的,可能
中的
num
变量,而
循环必须是
isbn
中的代替