返回本章節
返回作業目錄
需求說明:
- 利用List實現報數遊戲
- 在控制檯輸入一個大於3的正整數,該整數表示有多少人,如在控制檯輸入10,表示有10個人,10個人圍成一個圓圈,從序號1開始爲這些人依次編號。
- 第一個人從數字1開始報數,數到3的人則離開該圓圈,第4個人繼續從1開始數,再次數到3的人同樣離開,反覆進行此操作,直到剩下最後一個人,在控制檯輸出剩下的最後一個人的編號。
實現思路:
- 創建Person類,在該類中定義String類型屬性人員編號no,並創建該屬性的getter和setter屬性,重寫toString()方法,該方法返回值爲人員編號值。
- 創建CalcResult類,在該類中定義靜態方法calc()方法,該方法將獲取最後一個留下的那一個人的人員編號。
- 在calc()方法中,創建LinkedList對象,並通過for循環創建指定數量的Person對象,爲人員的編號依次賦值,將這些Person對象保存至LinkedList集合中。
- 在calc()方法中定義int類型計數器,在while循環中通過計數器判斷當前位置是否已經數到3。將未數到3的Person對象從LinkedList集合中移除,並將該對象添加至LinkedList的尾部,對於數到3的Person對象,則將該對象從LinkedList集合中移除掉,直到LinkedList僅有一個元素時結束循環。
實現代碼:
(代碼沒有按照題目來寫,但是思路是一樣的)
package com.test.List1;
import java.util.ArrayList;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("數字:");
int num = sc.nextInt();
ArrayList list = new ArrayList();
for (int i = 1; i <= num; i++) {
list.add(i);
}
int index = 0;
while (list.size()>1) {
index++;
if (index==3) {
list.remove(0);
index = 0;
} else {
list.add(list.remove(0));
System.out.println(list);
}
}
System.out.println(list.get(index));
}
}