簡體   English   中英

從另一個是數組的類中調用方法

[英]Calling method from another class that's an array

我正在從另一個類調用方法。 該方法包含一個整數數組。 我試圖避免手動輸入索引。

我正在嘗試搜索范圍內的數字。

示例:ArrayList:{1,5},{5,10},{10,15}

輸入:輸入3

流程:搜索范圍內的數字

輸出:1,5

驅動程序類將名為Numbers的主類中的對象存儲到ArrayList中。 主類有一個訪問器調用getNumbers。 getNumbers包含一個具有2個元素的整數數組。 驅動程序正在調用getNumbers以驗證用戶輸入的條目。

下面的代碼可以工作,但是我被告知對進入索引的代碼考慮了不好的編碼。 我想知道如何從getNumber方法輸出數組,而不知道getNumber的數組長度嗎?

我所擁有的例子:

for(int i = 0; i < example.size(); i++) 
         //number is the integer that is inputted.
         if(example.get(i).getNumbers()[1] > number &&
         example.get(i).getNumbers()[0] <= numbers)
            System.out.println(example.get(i));

我應該添加另一個for循環嗎?

我正在考慮的示例:

for(int i = 0; i < example.size(); i++)
    for(int j = 0; j < example.get(i).getNumbers.length; j++){
         if(example.get(i).getNumbers()[j] > number &&
         example.get(i).getNumbers()[j] <= numbers)
            System.out.println(example.get(i));
  }
}

編輯:更改了我的措辭方式,並固定了我認為應該做的代碼。

下面的代碼可以工作,但是我被告知對進入索引的代碼考慮了不好的編碼。 我想知道如何從getNumber方法輸出數組而不知道getNumber的數組長度嗎?

如果您不想使用數組中第一個元素和第二個元素的數組indexes進行驗證,則可以通過修改Numbers class來解決問題,如下所示:

(1)定義兩個int變量成員(當前只有一個)

(2)添加一個方法isInLimits(int input)以驗證范圍

(3)覆蓋toString (),可用於將對象打印為String

數字類(已修改):

public static class Numbers {

        private int firstElement;
        private int secondElement;

        public int getFirstElement() {
            return firstElement;
        }
        public void setFirstElement(int firstElement) {
            this.firstElement = firstElement;
        }
        public int getSecondElement() {
            return secondElement;
        }
        public void setSecondElement(int secondElement) {
            this.secondElement = secondElement;
        }

        //checks the input is in the range of this object elements
        public boolean isInLimits(int input) {
            if(input >= firstElement && input < secondElement) {
                return true;
            } else {
                return false;
            }
        }

        @Override
        public String toString() {
            return "{"+firstElement+","+secondElement+"}";
        }
    }

數字類的用法:

public static void main(String[] args) {

      int userInput = 10; //get it from user 

      List<Numbers> example = new ArrayList<>();
      //Add Numbers objects to example list

       for(int i=0;i< example.size();i++) {
            Number numberTemp = example.get(i);
            //call Numbers object's isInLimits
            if(numberTemp.isInLimits(userInput)) {
                System.out.println(numberTemp);
            }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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