【问题标题】:Calling method from another class that's an array从另一个数组类调用方法
【发布时间】:2016-11-07 14:52:04
【问题描述】:

我正在调用另一个类的方法。该方法包含一个整数数组。我试图避免手动输入索引。

我正在尝试搜索某个范围内的数字。

示例: 数组列表:{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));
  }
}

编辑:更改了我对某些事情的措辞并修复了我认为我应该做的代码。

【问题讨论】:

  • 通过缩进正确地格式化你的代码——你现在呈现它的方式也是一个糟糕的编码示例。
  • 您的问题结构也很糟糕,请考虑编辑。包括您使用的重要类,例如您的 example 是什么类,ListArray 是什么?
  • 我编辑了我的措辞方式。希望它现在更有意义。如果不是,请指出,我会尽力解决。
  • @Touchpad 你可以看下面的代码,你需要修改 Numbers 类如下来容纳两个元素

标签: java arrays


【解决方案1】:

下面的代码有效,但有人告诉我它认为编码错误 输入索引。我想知道如何从 不知道getNumber数组长度的getNumber方法?

如果您不想使用数组indexes 对数组中的第一个元素和第二个元素进行验证,则可以通过修改Numbers class 来解决问题,如下所示:

(1)定义两个int变量成员(目前你只有一个)

(2) 添加方法isInLimits(int input) 来验证范围

(3) 覆盖toString() 可用于将对象打印为字符串

数字类(修改):

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);
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 1970-01-01
    • 2011-09-09
    • 2016-10-12
    相关资源
    最近更新 更多