为什么我的程序刚刚终止?

时间:2016-05-05 18:25:41

标签: java arrays

程序运行比终止,为什么?有点困惑,因为没有语法错误,请解释为什么它终止,谢谢。相当新的java和使用数组。

import java.text.*;

import java.util.*;

public class randomizer {
public void randomizer() throws InterruptedException 
{
    randomizer r = new randomizer();
    int[] numbers = {3,7,2,62,1,53,16,563,12,13,75};
    Calendar rightNow = Calendar.getInstance();
    int hour = rightNow.get(Calendar.HOUR_OF_DAY);
    int minute = rightNow.get(Calendar.MINUTE);
    int seconds = rightNow.get(Calendar.SECOND);
    int[] numbers2 = {10,32,61,2,5};
    int[] date = {hour,minute,seconds};
    int RandomNumber = (r.getRandom(date) * r.getRandom(numbers)) +  r.getRandom(numbers2);
    while(true) // just for test case purposes
    {
        Thread.sleep(1000);
        System.out.println(RandomNumber);
    }

}
public static int getRandom(int[] array) {
    int rnd = new Random().nextInt(array.length);
    return array[rnd];
}


public static void main(String[] args) {
    randomizer r = new randomizer();


}

}

3 个答案:

答案 0 :(得分:3)

您的randomizer类没有定义构造函数,因此在void main方法中构造它不会做任何事情。

值得注意的是,您的类确实定义了void randomizer()方法 - 这可能是一个错误。注意,类应该是Pascal大小写(Randomizer,方法应该是驼峰大小写(randomizer)。

答案 1 :(得分:0)

应用已终止,因此无效:

public static void main(String[] args) {
    randomizer r = new randomizer();
}

这里你创建了一个类随机化器的对象到目前为止很好..

但在代码中你有这个:

public void randomizer() throws InterruptedException 
{....
....

}

并且这不是构造函数,这是一个方法......所以只要你不调用它就不会被执行......

您需要通过执行

将其更改为构造函数
randomizer() throws InterruptedException 
{....
....

}

或在主方法中调用

public static void main(String[] args) {
    randomizer r = new randomizer();
    r.randomizer();
}

之后修改方法,因为你还有

public void randomizer() throws InterruptedException 
{
    randomizer r = new randomizer(); //this will recursive create objects until overflows....
    int[] numbers = {3,7,2,62,1,53,16,563,12,13,75};
    Calendar rightN

答案 2 :(得分:0)

你已经创建了一个随机化器对象但实际上并没有做任何其他事情。您实现的方法(randomizer())不是构造函数,因此您需要调用它。所以在你的主要方法中你需要立即做这两件事:

randomizer r = new randomizer(); r.randomizer();

为了让你的逻辑内部开始。

PS1阅读java中的命名约定 PS2看起来你想要实现一个构造函数。如果你的方法' public void randomizer()'应该是一个然后删除关键字(返回类型)' void'当你使用'随机函数r = new randomizer();'在main中,然后你的逻辑将执行..