我想在java中指派一組變量,如下所示:分配在Java
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
我如何在Java中實現這一目標?
我想在java中指派一組變量,如下所示:分配在Java
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
我如何在Java中實現這一目標?
這不是你如何在Java中做事。 Java中沒有動態變量。 Java變量必須在源代碼(*)中聲明。期。
根據您要達到的目標,您應該使用數組,List
或Map
;例如
int n[] = new int[3];
for (int i = 0; i < 3; i++) {
n[i] = 5;
}
List<Integer> n = new ArrayList<Integer>();
for (int i = 1; i < 4; i++) {
n.add(5);
}
Map<String, Integer> n = new HashMap<String, Integer>();
for (int i = 1; i < 4; i++) {
n.put("n" + i, 5);
}
它可以使用反射動態指已在源代碼中被聲明變量。但是,此只有適用於作爲類成員(即靜態和實例字段)的變量。它不適用於局部變量。請參閱@ fyr的「快速和骯髒」示例。
然而,在Java中不必要地做這種事情是一個壞主意。它效率低下,代碼更復雜,並且由於您依賴運行時檢查,所以它更脆弱。
而這不是「具有動態名稱的變量」。它更好地描述了對具有靜態名稱的變量的動態訪問。
* - 該聲明有些不準確。如果使用BCEL或ASM,則可以在字節碼文件中「聲明」變量。但不要這樣做!這種方式就是瘋狂!在Java中
非常感謝,得到了我正在尋找的東西。最後一部分(Map
應該指出,即使這是可能的,它不應該是你實際上做的事情。你不會從中獲得任何收益;你實際上會失去可讀性。如果你想鏈接它們,可以使用'Map
@JeroenVannevel - 這就是我的意思是「瘋狂」:-) –
您應該使用List
或array
代替
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
或者
int[] arr = new int[10];
arr[0]=1;
arr[1]=2;
甚至更好
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("n1", 1);
map.put("n2", 2);
//conditionally get
map.get("n1");
你需要的是命名的數組。我想寫下面的代碼:
int[] n = new int[4];
for(int i=1;i<4;i++)
{
n[i] = 5;
}
不想使用數組。我想根據某些條件動態訪問變量(n1,n2,n3)。 –
動態變量名
有沒有這樣的事情。
你的情況,你可以使用數組:
int[] n = new int[3];
for() {
n[i] = 5;
}
對於更一般(name, value)
對,使用Map<>
試試這個方法:
HashMap<String, Integer> hashMap = new HashMap();
for (int i=1; i<=3; i++) {
hashMap.put("n" + i, 5);
}
如果你想要一些訪問的變量您可以使用反射來進行動態排序。然而,反射不適用於局部變量。它只適用於類屬性。
粗略的快速和骯髒的例子是這樣的:
public class T {
public Integer n1;
public Integer n2;
public Integer n3;
public void accessAttributes() throws IllegalArgumentException, SecurityException, IllegalAccessException,
NoSuchFieldException {
for (int i = 1; i < 4; i++) {
T.class.getField("n" + i).set(this, 5);
}
}
}
您需要提高以各種方式驗證碼這只是一個例子。這也不被認爲是好的代碼。
當您需要將Android的傳感器event.values []轉換爲一組變量時非常出色。 event.values []的長度可以從1到6,它可以方便地進行轉換,對於無數組的json封送處理。 –
你不知道。您可以做的最接近的事情是使用Google Maps來模擬它,或者定義您自己的對象來處理。
你能否澄清你的問題? –
你需要爲局部變量做這個嗎?爲什麼不是數組元素? –
@ Eng.Fouad:我想動態地通過名字訪問變量。 –