package Java_class;
//抽象的父类,具有getnum()和show();
import java.util.*;
abstract class class1{
final int low=200;
final int high=3000;
protected abstract int getlabel();
protected abstract void show();
int[] dig;
int sum=0;
protected int getnum() {
int num =(int)(Math.random()*(high-low)+low);
return num;
}
}
//子类,返回不同的数字以显示其标签;
class object1 extends class1{
protected int getlabel() {
dig=new int[50];
for(int i=0;i<50;i++) {
dig[i]=getnum();
}
int max=dig[0];
for(int i=0;i<dig.length;i++) {
while(dig[i]>0) {
sum+=dig[i]%10;
dig[i]/=dig[i];
}
if(sum>max) {
max=sum;
}
}
return max;
}
protected void show() {
System.out.println("Senior Manager");
}
}
//主类,用于创建对象并显示其名称和标签;
public class test1 {
public static void play(class1 stf) {
int label=stf.getlabel();
System.out.println(label);
stf.show();
}
public static void main(String[] args) {
object1 player= new object1();
play(player);
}
}
代码运行并且什么也没显示。为什么...
答案 0 :(得分:1)
这是您的问题:
while (dig[i] > 0) {
sum += dig[i] % 10;
dig[i] /= dig[i];
}
第一次迭代后,dig[i]
始终等于1
。因为第三行。这样就得到了无限循环。如果您使用调试器而不是仅运行代码,则很容易发现此类错误。
答案 1 :(得分:-1)
while(dig[i]>0)
它可以是无穷循环。 在您的方法上使用调试,您会看到它。