Java程序在“ for”循环后卡住

时间:2018-08-26 17:15:19

标签: java arrays string for-loop

我的Java程序似乎在for-loop之后卡住了。它不会陷入循环中,但是该程序只是出于某种原因根本不想进一步。但是,它成功完成了循环:

public static void main(String[] args){
    String[] command = new String[20];
    Scanner a = new Scanner(System.in);
    for (int i = 0; a.hasNext(); i++) {
        command[i] = a.next();
        System.out.println(i);
    }
    a.close();
    System.out.println("asd");
}

如果输入了1个单词,该程序将输出"0",如果输入2个单词,则将输出"0 1",依此类推,但是System.out.println("asd")永远不会执行,并且程序也不会停止。

4 个答案:

答案 0 :(得分:1)

欢迎使用StackOverflow :)

for-loop的执行永无止境,因为a.hasNext()始终为true。因此,循环永远不会满足终止条件。因此,您必须在某个时刻使用break(输入为"EXIT")来摆脱无限循环或设置允许的最大值i-您不是要{ {1}}用值填充数组吗?

command.length

答案 1 :(得分:1)

该程序永远不会终止,因为init永远不会关闭,因此var Abc = function(aProperty){ this.aProperty = aProperty; }; Abc.prototype.init = function(){ // init stuff return this; }; // either as oneliner var abc = new Abc().init(); // or var abc = new Abc(); setTimeout(function(){abc.init()},500); 始终为true,循环永远不会结束。

相反,您可以要求用户输入特定字符以退出程序。

System.in

答案 2 :(得分:0)

在for循环中检查退出条件

!a.next().equals("n")

//

public static void main(String args[])

     {

        String[] command = new String[20];
        Scanner a = new Scanner(System.in);
        for (int i = 0; a.hasNext() && !a.next().equals("n"); i++) {
            command[i] = a.next();
            System.out.println(i);
            System.out.println("Do you want to continue? y/n");

        }
        a.close();       

     }

答案 3 :(得分:0)

此问题是由于程序再次等待您的输入而引起的,它从未停止。同样,只有在超出数组大小(即用户输入了20个以上的令牌)后,您的代码才会终止,并带有异常(spaghetti_plot <- function(input, MV, item_level){ MV <- enquo(MV) titles <- enquo(item_level) input %>% filter(!!(MV) == item_level) %>% mutate(first_answer = first_answer) %>% ggplot(.,aes( x = time, y = jitter(Answer, amount = 0.1), group = ID)) + geom_line(aes(colour = factor(first_answer))) + coord_cartesian(ylim = c(1, 5)) + labs(title = paste('Item ', substr(item_level, 5, 5)) ,x = 'Time', y = 'Answer\n', colour = 'Answer time 0')+ scale_colour_manual(values = c("1" = "green", "2" = "black", "3" = "#ff7f00", "4" = "blue", '5' = "#e41a1c")) + theme(plot.title = element_text(hjust = 0.5, size = 20, face = 'bold', color = 'black'), axis.text = element_text(size = 12), axis.title = element_text(size = 20), strip.text = element_text(size = 15), legend.title =element_text(size=15), legend.text =element_text(size=12) ) }

如果要捕获数组索引中的每个单词,请使用

ArrayOutOfBoundException

甚至可以避免for循环导致不必要的混乱。