Как напечатать геттерную строку без нуля в качестве вывода - PullRequest
0 голосов
/ 05 октября 2018

Я получаю нулевое значение всякий раз, когда использую showMessage ();Я полагаю, что это из-за того, что я возвратил c в конце метода.Есть ли способ распечатать getName (), если он не находится в методе main, как в getName () в методе showMessage ().,Вот мой кандидатский класс

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


}
}

Вот мой главный

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



c1 = showMessage();

}

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 Candidate showMessage(){
    Candidate c = new Candidate();

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

    return c;
}


}

Ответы [ 4 ]

0 голосов
/ 05 октября 2018

попробуйте передать кандидата внутри функции 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());

}


}
0 голосов
/ 05 октября 2018

попробуйте это:

public Candidate () {

 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; 

}

0 голосов
/ 05 октября 2018

просто замените

c1 = showMessage();

на

showMessage(c1);

и измените метод showMessage, как показано ниже:

private static void showMessage(Candidate c ){    

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

так же, как выможно использовать showMessage для печати сообщений для оставшихся объектов, таких как

showMessage(c2);
showMessage(c3);
showMessage(c4);
0 голосов
/ 05 октября 2018

Посмотрите на конструктор:

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
   //...
}
...