(JAVA)为什么我没有成绩?班上有什么问题吗?我找不到

时间:2018-06-21 11:09:38

标签: java

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);
    }  
}

代码运行并且什么也没显示。为什么...

2 个答案:

答案 0 :(得分:1)

这是您的问题:

while (dig[i] > 0) {
    sum += dig[i] % 10;
    dig[i] /= dig[i];
}

第一次迭代后,dig[i]始终等于1。因为第三行。这样就得到了无限循环。如果您使用调试器而不是仅运行代码,则很容易发现此类错误。

答案 1 :(得分:-1)

 while(dig[i]>0)

它可以是无穷循环。 在您的方法上使用调试,您会看到它。