【问题标题】:How do you use a separate class to determine a result?您如何使用单独的类来确定结果?
【发布时间】:2013-01-10 01:56:22
【问题描述】:

我的问题出在我的“NumberAnalyzer.java”类中,我应该能够使用“Number.java”类来确定 ArrayList 中的数字是否为奇数(以及稍后的偶数和完美数) ) 但由于“Number.java”中的“isOdd()”方法本身不会读取 int 或其他变量,我无法找到一种方法来测试每个数字以在“countOdds”方法中生成“oddCount” "NumberAnalyzer.java" 的数量增加以从 runner 类中生成字符串中奇数的个数。

NumberAnalyzer.java

import java.util.ArrayList;
import java.util.Scanner;

import com.sun.xml.internal.ws.api.pipe.NextAction;

import static java.lang.System.*;

public class NumberAnalyzer
{
private ArrayList<Number> list;

public NumberAnalyzer()
{

}

public NumberAnalyzer(String numbers)
{
    list = new ArrayList<Number>();
    String nums = numbers;
    Scanner chopper = new Scanner(nums);
    while(chopper.hasNext()){
        int num = chopper.nextInt();
        list.add(new Number(num));
    }
    chopper.close();
    System.out.println(list);
}

public void setList(String numbers)
{
    list = new ArrayList<Number>();
    String nums = numbers;
    Scanner chopper = new Scanner(nums);
    while(chopper.hasNext()){
        int num = chopper.nextInt();
        list.add(new Number(num));
    }
    chopper.close();

}

public int countOdds()
{
  int oddCount=0;
  for(int i = 0; i < list.size(); i++){
      if(Number.isOdd()== true){
          oddCount++;
      }
  }
  return oddCount;
}

public int countEvens()
{
  int evenCount=0;



  return evenCount;
}

public int countPerfects()
{
    int perfectCount=0;



  return perfectCount;
}

public String toString( )
{
    return "";
}
}

Number.java

public class Number
{
private Integer number;

public Number()
{


}

public Number(int num)
{
    number = num;
}

public void setNumber(int num)
{
    number = num;
}

public int getNumber()
{
    return number;
}   

public boolean isOdd()
{
    if(number%2==0){
        return false;
    }
    return true;
}

public boolean isPerfect()
{
    int total=0;
    for(int i = 1; i < number; i++){
        if(number%i==0){
            total+= i;
        }
    }


    return (number==total);
}   

public String toString( )
{
    String output = getNumber() + "\n" + getNumber()+ "isOdd == " + isOdd() + "\n" + getNumber()+ "isPerfect==" + isPerfect()+ "\n\n";
    return output;
}
}

跑步者类

import java.util.ArrayList;
import java.util.Scanner;
import static java.lang.System.*;

public class Lab16b
{
public static void main( String args[] )
{
    NumberAnalyzer test = new NumberAnalyzer("5 12 9 6 1 4 8 6");
    out.println(test);
    out.println("odd count = "+test.countOdds());
    out.println("even count = "+test.countEvens());
    out.println("perfect count = "+test.countPerfects()+"\n\n\n");


    //add more test cases


}
}

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 完成...(认为这就是您要问的)
  • 一个 SSCCE 应该只有一个公共类和一个文件。它也应该按原样编译(不确定该批次是否可以,但直到它是一个类才愿意发现)。
  • 从来没有办法让它成为一个单一的类,因为它与我保存的文件夹中的 3 个完全独立的 .java 文件相关联......我的问题是
  • “从来没有办法让它成为一个单一的类,因为它与 3 个完全独立的 .java 文件相关联”从未听说过匿名/内部类?跨度>

标签: java arrays list arraylist


【解决方案1】:

当你打电话时

test.countOdds());

控制转到 NumberAnalyzer.java

public int countOdds()
{
  int oddCount=0;
  for(int i = 0; i < list.size(); i++){
      if(Number.isOdd()== true){
          oddCount++;
      }
  }
  return oddCount;
}

在这里,您通过类名调用Number.isOdd() 方法作为静态方式,但我认为您不能这样做,因为isOdd() 不是静态的。

是编译时错误

解决方案:

迭代您的列表并将列表中的值一一发送到isOdd(int val) 方法。

尝试将isOdd() 方法设为静态,该方法接受一个数字参数并返回真或假。

根据返回类型增加计数器。

【讨论】:

  • 如果您的问题有所不同,请告诉我。
  • 我通过在新帖子中重新表述问题得到了答案,我相信它与您所做的很接近
  • 我没有看到任何有问题的修改。如果您正在寻找其他内容或详细评论,请修改问题,以便它可以看到您正在寻找的确切解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2018-09-13
  • 2017-12-07
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
相关资源
最近更新 更多