我需要在"内写什么?如果"语句,以检查对象的变量(数字)是否等于我的数组中的任何对象的变量(数字)?
public class Question{
private int number;
private String questionString;
private int index = 0;
public Question(int number, String questionString){
if(number < 0){
System.out.print("Number cannot be negative!");
}
if(questionString.equals(null) || questionString.trim().isEmpty()){
System.out.print("Question cannot be empty!");
}
this.number = number;
this.questionString = questionString;
}
public boolean equals(Object o){
if(o instanceof Question){
for(int i = 0; i < index; i++){
if(.... ){
}
}
return true;
}
return false;
}
}
测试类(主类),ofc尚未完成我希望它能为您提供有关如何继续我的问题类的足够信息:
public class Test{
String name;
Question[] questions;
public Testi(String name, int nrQuestions){
}
public static void main(String[]args){
}
}
答案 0 :(得分:0)
这应该做:
public boolean equals(Object o){
if (o == null )
return false;
if(o instanceof Question){
if (((Question)o).number == this.number ){
if (this.questionString.equals(((Question)o).questionString)){
return true;
}
}
}
return false;
}
但请注意,如果您要实施equals()
,则还应实施hashCode()
。当两个物体相等时,它应该是你的“模型”。在你的情况下,我会说当两个问题的number
相同时,问题也是一样的。如果没有,您还应该将questionString
添加到支票
答案 1 :(得分:0)
从你上一篇评论中,我想我现在明白你的真实问题:你试图用equals()
方法将一个对象与你传递给这个方法的对象数组进行比较,对吧?对equals的调用如下所示:
Question[] questions;
question.equals(questions);
从技术上讲,这可以通过Java实现,但强烈反对我会说。 equals()
应该只用于一次比较一个对象(并坚持使用hashCode / equals合约)。
所以我建议你做这样的事情:
//your application code
public boolean equals(Object obj){
if (obj instanceof Question){
return (((Question)obj).number == this.number);
}
return false;
}
//use this to obey the equals/hashCode contract
public int hashCode() {
return this.number;
}
// your test code -------------
public void testQuestions(Question testAgainstThisObject, Question[] testQuestions) {
for (Question testThisQuestion : testQuestions) {
assertTrue(testAgainstThisObject.equals(testThisQuestion));
}
}
另一种方式是在Question.java
中使用专门的方法,如下所示:
public boolean isThisContained(Question[] questions) {
for (Question question : questions) {
if (this.equals(question)) {
return true;
}
}
return false;
}