我在写快速幂的时候,用@Test运行代码
//快速幂代码
public static int q_power(long a,long b,int mod){
long res=1;
while (b!=0){
if(b%2==1)res=res*a%mod;
b>>=1;
a=a*a%mod;
}
return (int)res;
}
如果是在@Test上运行
// 测试代码
@Test
public void q_powerTest(){
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=1000;
int m=20;
System.out.println(q_power(a,b,m));
}
运行时候,左边一直在转的情况,而且控制台无法输入
但是如果我把a直接在代码赋值(例如)int a=2;
@Test
public void q_powerTest(){
Scanner in=new Scanner(System.in);
int a=2;
int b=1000;
int m=20;
System.out.println(q_power(a,b,m));
}
那么程序运行正常,直接出结果
直接在main测试
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int b=1000;
int m=20;
System.out.println(q_power(a,b,m));
}
就一切正常
我这样测试下来,感觉就是@Test 和 System.in 有冲突。
想问,有人知道具体原因吗?
还是,你们用我的代码会不会情况不一样,我用的idea,jdk 1.8
解决了
具体看这个博客
https://blog.csdn.net/qq_41160301/article/details/123029332