如何在不获取null作为输出的情况下打印getter字符串?

时间:2018-10-05 13:40:02

标签: java class object methods getter-setter

每当我使用showMessage()时,我都会得到null值;我相信是因为 我在方法末尾返回c。有什么方法可以打印出getName()而不将其存在于main方法中,就像在showMessage()方法中的getName()中一样。 。 这是我的应聘课程

file1

这是我的主要

public class Candidate {

private String name;
private int votes;

//default constructor
public Candidate() {

String name = "Not Available! ";
int votes = 0; 
}

//overloaded constructor
public Candidate(String _name, int _votes){
  name  = _name;
  votes = _votes;

}

//getter
public String getName(){return name;}
public int getVotes(){return votes;}

//setter

public void incrementVote(){
  votes = votes + 1;

}

public void setName(String _name){
    name =_name;
}

public void print(){

    System.out.println("To vote for " + name);


}
}

4 个答案:

答案 0 :(得分:3)

只需替换

c1 = showMessage();

使用

showMessage(c1);

并修改方法showMessage,如下所示

private static void showMessage(Candidate c ){    

    System.out.println(c.getName());
}

因此,类似地,您可以使用showMessage为诸如

之类的剩余对象打印消息。
showMessage(c2);
showMessage(c3);
showMessage(c4);

答案 1 :(得分:2)

看看构造函数:

public Candidate() {    
  String name = "Not Available! ";
  int votes = 0; 
}

您重视的是局部变量,而不是name实例字段。
这些引用了两个不同的对象。因此,对一个进行评估不会对另一项产生任何影响。
您对votes字段犯了同样的错误,但是不会引起任何问题,因为int字段的默认值为0

因此,请设置name字段:

public Candidate() {    
  this.name = "Not Available! ";
  // not required to set votes as it has 0 as default value
}

或者仅使用字段初始化器为这些字段提供默认值:

public class Candidate {
   //...       
   private String name = "Not Available! ";    
   private int vote; //  0 as default value
   //...
}

答案 2 :(得分:2)

尝试将候选对象作为参数传递给showMessage函数。然后在showMessage函数中,使用getName()获取候选名称。 检查以下内容:

import java.util.*;

public class Election {
    public static void main(String args[]){
    System.out.println("Welcome to the polls! ");

    Candidate c1 = new Candidate();
    Candidate c2 = new Candidate();
    Candidate c3 = new Candidate();
    Candidate c4 = new Candidate();


    c1 = inputCandidate();
    c2 = inputCandidate();
    c3 = inputCandidate();
    c4 = inputCandidate();



    showMessage(c1);

}

private static Candidate inputCandidate(){
    Scanner sc = new Scanner(System.in);
    String inputN;

    Candidate c = new Candidate();

    System.out.println("Enter candidate");

    inputN = sc.nextLine();
    c.setName(inputN);

    return c;
}

private static void showMessage(Candidate c){


    System.out.println(c.getName());

}


}

答案 3 :(得分:1)

尝试一下:

公开候选(){

 this.name = "Not Available! ";// Previous code is creating a new temp variable by declaring it again, This implementation will set object variable not the temp variable

 this.votes = 0; 

}