我在Java中有一个字符串数组,如
String arr[] = {"A", "B" , "C", "D"};
现在我要做的是从用户那里取任何int数字,例如8,我必须打印对应于该数字的字母。 但是,每次当arr []完成时,#A;#34; = 1," B" = 2," C" = 3," D" = 4,然后在它之后创建数组中每个元素的副本,例如从那里开始计数
arr[] = {"A","A", "B","B", "C","C", "D","D"}
所以根据现在的数字" A" = 5," A" = 6," B" = 7," B& #34;。= 8
所以应该打印的答案" B"。
类似地,数字的值可以是任何东西,因此它必须创建数组并找到值。
答案 0 :(得分:1)
我认为你正在尝试做的最好的解决方案是HashMap。 在java中向正常数组添加条目是不可能的,因为它们的大小无法更改。 HashMap提供可扩展性和引用索引的可能性(例如:“potato”=“First-class”,“strawberry”=“Second-class”)等。 关于HashMaps的一点概述:http://javarevisited.blogspot.fr/2011/02/how-hashmap-works-in-java.html
答案 1 :(得分:0)
您不需要实际复制元素,只需要跟踪复制元素的次数。这是一种有效的方法:
public static String selectString(String[] arr, int n) {
//n--; Add this line if you want n=1 to be the first element, rather than n=0
int size = arr.length;
int duplicate = 1;
while(n >= size) {
n -= size;
size *= 2;
duplicate *= 2;
}
return arr[n/duplicate];
}
这是前13的输出:
0:A 1:B 2:C 3:D 4:A 5:A 6:B 7:B 8:C 9:C 10:D 11:D 12:A