我正在调用另一个类的方法。该方法包含一个整数数组。我试图远离手动输入索引。
我正在尝试搜索范围内的数字。
例如: 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));
}
}
编辑:改变了我的措辞,并修改了我认为应该做的代码。
答案 0 :(得分:1)
下面的代码可以工作,但我被告知它认为代码编码不好 输入索引。我想知道如何从中输出数组 getNumber方法不知道getNumber的数组长度?
如果您不想对阵列中的第一个元素和第二个元素使用数组indexes
进行验证,那么您可以通过修改Numbers
class
来解决问题如下图所示:
(1)定义两个int
变量成员(目前只有一个)
(2)添加方法isInLimits(int input)
以验证范围
(3)覆盖toString
(),可用于将对象打印为String
Numbers class(已修改):
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+"}";
}
}
使用Numbers类:
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);
}
}
}