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