我正在嘗試制作一個程序,該程序?qū)⒌谝粋€參數(shù)作為列表的(大小 + 1),即元素的數(shù)量。為了保持元素和索引相同,我在列表的索引 0 添加了一個假值。當(dāng)程序運(yùn)行時,它需要來自用戶的三個輸入(這是我想要的)并終止。但是當(dāng)我取消對其余代碼的注釋(實(shí)際上是必需的)時,程序會繼續(xù)接受輸入并且不會終止我嘗試執(zhí)行的任何操作,除非我按下終止按鈕。請有人解釋我為什么會這樣?import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.StringTokenizer;public class FastReader { BufferedReader br; StringTokenizer st; public FastReader() { br = new BufferedReader(new InputStreamReader(System.in)); } String next() { while (st == null || !st.hasMoreElements()) { try { st = new StringTokenizer(br.readLine()); } catch (IOException e) { e.printStackTrace(); } } return st.nextToken(); } int nextInt() { return Integer.parseInt(next()); } long nextLong() { return Long.parseLong(next()); } double nextDouble() { return Double.parseDouble(next()); } String nextLine() { String str = ""; try { str = br.readLine(); } catch (IOException e) { e.printStackTrace(); } return str; } void close() { try { br.close(); } catch (IOException e) { e.printStackTrace(); } }}public static void main(String[] args) throws Exception { FastReader s = new FastReader(); int n = s.nextInt(); int k = s.nextInt(); int x = s.nextInt(); ArrayList<Integer> p = new ArrayList<>(); p.add(0); for (int i = 1; i <= n; i++) { p.add(i, i); } //for(int i=x; p.size()>2; i=(1+1)%p.size()){ // int cp= i; // int tk= cp%k; // for(int j = cp+1; j<=cp+tk; j++){ // p.remove((Object)j); // } //} //System.out.print(p.get(1));}
2 回答

慕虎7371278
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個贊
你的for
條件是問題。你陷入了無限循環(huán)。這與讀取輸入數(shù)據(jù)無關(guān)。
for(int i=x; p.size()>2; i=(1+1)%p.size()){
將首先做i = x
,然后如果p.size()>2
i
將等于(1+1)%p.size()
,即2
。而且 for 循環(huán)的條件永遠(yuǎn)為真:在某些時候,您的列表p
將包含[0, 1, 2]
并且不能2+1
從列表中刪除大于或等于的元素。
添加回答
舉報(bào)
0/150
提交
取消