簡體   English   中英

在 Java 中如何使用 if 語句定義不同大小的數組?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM