[英]How do you define arrays of different sizes using if statements in Java?
所以,我試圖為我正在做的 Java 項目編寫一些測試用例,我決定將它們移動到它們自己的函數中,並使用測試函數的參數在它們之間進行選擇,而不僅僅是使用代碼的注釋和取消注釋,就像我目前正在做的那樣。 但是,我遇到了一個障礙:有問題的代碼涉及數組變量的初始化,如果我嘗試在 if-else 語句中初始化它們,那么稍后的其他代碼段由於范圍的原因無法看到它們問題。 另外,在Java中,數組是固定大小的,有些測試用例涉及不同大小的數組(包括空數組),所以簡單地事先創建數組是行不通的。
這是我已經嘗試過的代碼(arrayGen 是一個函數,它創建一個包含 n 個元素的整數數組,偽隨機值位於上下限之間,包括在內)。 請注意,為了更改我正在運行的測試用例,我需要注釋掉當前的測試用例並取消注釋我要運行的測試用例; 如果可能,我想用一系列 if-else if-else 語句替換它。
System.out.println("Unsorted:");
int[] unsorted = arrayGen(n,lower,upper);
//sorted array:
//int[] unsorted = new int[n];
//for (int i=0;i<n;i++)
//{
// if (lower+i<upper)
// {
// unsorted[i]=lower+i;
// }
// else unsorted[i]=upper;
//}
//reverse sorted array:
//int[] unsorted = new int[n];
//for (int i=0;i<n;i++)
//{
// if (upper-i>lower)
// {
// unsorted[i]=upper-i;
// }
// else unsorted[i]=lower;
//}
//array of static numbers:
//int[] unsorted = arrayGen(n,upper,upper);
//empty array:
//int[] unsorted = arrayGen(0,lower,upper);
有什么方法可以解決這個問題,並有一個更簡潔的代碼版本,還是我將不得不只對我想使用的測試用例進行注釋和取消注釋?
也許這可以給你一個想法。
int[] unsorted = makeTestData("random");
private int[] makeTestData(String type, int n, int lower, int upper){
switch(type){
case "random": return arrayGen(n,lower,upper);
case "static": return arrayGen(n, upper, upper);
case "empty": return new int[0];
case "sorted":
int[] toSort = arrayGen(n, lower, upper);
Arrays.sort(toSort);
return toSort;
default: throw new IllegalArgumentException(type);
}
}
如果您遇到有關重新定義變量的范圍界定問題,請嘗試將事物移至它們自己的自包含函數中。
但說真的,請嘗試使用一種已建立的測試框架,例如 JUnit。 他們為您提供了許多“樣板”內容,可以免費運行和報告測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.