以下代码正常 但是,一旦我在开始时接受任何整数输入,它就会进入无限循环。 我需要测试用例的整数值。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
class TestClass {
public static void main(String args[] ) throws Exception {
Scanner stdin = new Scanner(System.in);
//HERE I JUST INPUT AN
// INT VALUE PROGRAM GOES INFINITE LIKE int t = stdin.nextInt();
long count = 0;
String str = stdin.nextLine();
char[] c = str.toCharArray();
for(int j=0;j<str.length();j++){
switch(c[j]){
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
count++;
default : break;
}
}
arrangement(count,str.length());
}
public static void arrangement(long v,long n){
long total = fact(n);
long together = ((combination(v))*(fact(n-1))*2);
long answer = (total - together);
if(answer>0)
System.out.println(answer);
else
System.out.println("-1");
}
public static long fact(long n){
long ans;
if(n==1 || n==0)
return 1;
else
ans = fact(n-1)*(n);
return ans;
}
public static long combination(long n){
if(n==0)
return 0;
if(n==1)
return 0;
if(n==2)
return 1;
else
return ((fact(n))/((fact(n-2))*2));
}
}
为什么会出现这个问题? 任何可能的运行时错误原因&gt;?
答案 0 :(得分:0)
尝试放置scanner.nextLine();在nextInt()之后,如果你打算忽略该行的其余部分。有关nextInt()的类似问题,请参阅此帖子:Using scanner.nextLine()
答案 1 :(得分:0)
&#34;奇怪的&#34;运行时错误是(在
之后使用nextInt())$ java TestClass
42
在42之后输入一个返回值,stdin.nextLine()读取一个长度为0的行。
arrangement( 0, 0 );
致电
fact(n-1)
n == 0,然后进入相当长的无限递归。堆栈溢出......
我想你可以轻松解决这个问题。