Scanner num=new Scanner(System.in);
System.out.println("Enter number in range from 1 to 20");
int n=num.nextInt();
int product=1;
for(int i=1;i<=n;i++){
product*=i;
if(product>Integer.MAX_VALUE || product<Integer.MIN_VALUE){
System.err.println("Out od Integer boundary");
}
else System.out.println("Product of numbers between 1 and "+n+" is "+product);
}
}
}
에 정수를 홍보에서 자바를 중지 프로그램을 만드는 것입니다 13 및 1에서 14까지. 얻은 제품을 기록하고 결과가 올바른지 결정하십시오. 다음 힌트 : 1 - 13의 제품 (= 6227020800)은 int [-2147483648, 2147483647]의 범위를 벗어나지 만 long 범위 내에 있습니다. 모든 것이 정확하다고해도 컴퓨터 프로그램이 정답을 산출하지 못할 수도 있습니다! 그래서 올바른 Java가 자동으로 int 값을 long 값으로 초월 할 것이지만 이해할 수 있으면 허용하지 않는 프로그램을 만들려고합니다. 가능합니까? 또한 코드 나 생각에 잘못된 것을 설명해주십시오. 감사합니다. p.s 나쁜 영어로 죄송합니다.은 가능 내가 같은 기본 작업이 특정 일에 일하고 있어요 긴
아니요, Java는 마술처럼'int'를'long'으로 바꾸지는 않습니다. 단지'int'를 오버플로 할뿐입니다. – azurefrog
'int product = 1;'을'long product = 1;'로 변경하면 오류가 발생합니다. 첫 번째 것도 어길 수 있습니다. –
http://stackoverflow.com/a/1657868/655424 어디에서 오버플로가 발생하는지 감지하는 데 도움이됩니다.이 질문은 그 하나의 복제물에 가깝습니다. – Atreys