[英]How do I sort the numbers inputted from an array to tell how many times the number was entered
[英]How do i write a method that will loop through an enum an inputted number of times?
我有這個枚舉:
public enum Direction {
NORTH, WEST, SOUTH, EAST;
}
和這個方法:
public void turn(int n){
for (int i = 0; i < n; i++){
//Change compass direction n times
}
}
我需要做的是將方向逆時針旋轉90度,輸入次數為“ n”次。 我將枚舉設置為正確的順序,但我不確定如何做到這一點,以便可以通過迭代枚舉“ n”次來更改當前值的羅盤方向。
如果我理解正確,則需要遍歷enum
成員。
為了做到這一點,每個enum
都有一個.values()
方法,該方法以定義的順序返回具有所有有效值的數組。
所以用
public void turn(int n){
for (int i = 0; i < n; i++){
for (Direction direction : Direction.values()) {
// Do something with direction
}
}
}
您基本上可以實現您想要的。
編輯:澄清之后,我認為您寧可
public void turn(int n){
Direction[] directions = Direction.values()
for (int i = 0; i < n; i++) {
int direction_index = i % directions.length;
Direction direction = directions[direction_index];
// Do something with direction
}
}
要么
public void turn(int n){
int i = 0;
while (true) {
for (Direction direction : Direction.values()) {
if (i==n) return;
i++
// Do something with direction
}
}
}
我認為您不需要在此進行迭代。 您可以像這樣實現轉彎:
public Direction turn(Direction initial, int turns)
{
Direction[] dirs = Direction.values();
return dirs[(initial.ordinal()+turns) % dirs.length];
}
在此代碼中,您將獲取枚舉中當前元素的索引,並根據轉數獲得結果的索引。 通過結果索引,您可以生成一個枚舉值。
public static void main(String[] args) {
turn(6);
}
public static Direction turn(int n){
Direction result = null;
Direction[] values = Direction.values();
for(int i = 0; i < n; i++){
result = values[i % values.length];
System.out.println(i + " " + result);
}
return result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.