我的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")
永远不会执行,并且程序也不会停止。>
答案 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循环导致不必要的混乱。