我如何在另一个私有方法中使用一个方法的return语句?

时间:2011-12-05 04:50:33

标签: java class methods

这是我目前的代码:

import java.util.*;

public class VoteRecorder 
{
// Variables and instance variables
 public static String nameCandidatePresident1;
 public static String nameCandidatePresident2;
 public static String nameCandidateVicePresident1;
 public static String nameCandidateVicePresident2;
 public static int votesCandidatePresident1;
 public static int votesCandidatePresident2;
 public static int votesCandidateVicePresident1;
 public static int votesCandidateVicePresident2;
 private int myVoteForPresident;
 private int myVoteForVicePresident;


 public VoteRecorder()
 {
     nameCandidatePresident1 = "null";
     nameCandidatePresident2 = "null";
     nameCandidateVicePresident1 = "null";
     nameCandidateVicePresident2 = "null";
     votesCandidatePresident1 = 0;
     votesCandidatePresident2 = 0;
     votesCandidateVicePresident1 = 0;
     votesCandidateVicePresident2 = 0;
     myVoteForPresident = 0;
     myVoteForVicePresident = 0;     
 }


 public void setCandidatesPresident(String name1, String name2)
 {
     nameCandidatePresident1 = name1;
     nameCandidatePresident2 = name2;

 }

 public void setCandidatesVicePresident(String name1, String name2)
 {
    nameCandidateVicePresident1 = name1;
    nameCandidateVicePresident2 = name2;
 }

 public static void resetVotes()
 {
     votesCandidatePresident1 = 0;
     votesCandidatePresident2 = 0;
     votesCandidateVicePresident1 = 0;
     votesCandidateVicePresident2 = 0;   
 }

 public static String getCurrentVotePresident()
 { 
     return nameCandidatePresident1 + ":" + votesCandidatePresident1 + "\n" +
            nameCandidatePresident2 + ":" + votesCandidatePresident2;
 }

 public static String getCurrentVoteVicePresident()
 {
     return nameCandidateVicePresident1 + ":" + votesCandidateVicePresident1 +  "\n" +
            nameCandidateVicePresident2 + ":" + votesCandidateVicePresident2;
 }


 public void getAndConfirmVotes()
 {

 }


private String getVotes()
{
     Scanner keyboard = new Scanner(System.in);
     System.out.println("please vote for a President or vice president "     + nameCandidatePresident1 + ", " + nameCandidatePresident2 + ", " + nameCandidateVicePresident1
             + " or " + nameCandidateVicePresident2);
     String presidentVote = keyboard.nextLine();
     if (presidentVote.equalsIgnoreCase(nameCandidatePresident1))    
         return nameCandidatePresident1;

     if(presidentVote.equalsIgnoreCase(nameCandidatePresident2))     
         return nameCandidatePresident1;     

     System.out.println("please vote for a Vice president " + nameCandidateVicePresident1 + " or" + nameCandidateVicePresident2);
     String vicePresidentVote = keyboard.nextLine();

     if(vicePresidentVote.equalsIgnoreCase(nameCandidateVicePresident1))
         return nameCandidateVicePresident1;

     if(vicePresidentVote.equalsIgnoreCase(nameCandidateVicePresident2))
         return nameCandidateVicePresident2;

     else 
         return "not a valid vote";

}


private boolean confirmVotes()
{
   System.out.println("Your vote for President is:");
   System.out.println("your vote for Vice President is:");
   System.out.println("Is this correct? Yes or No?");
   Scanner keyboard = new Scanner(System.in);
   String answer = keyboard.nextLine();
   if (answer.equalsIgnoreCase("Yes"))
        return true;
   else 
       return false;
}

private void recordVote()
{
puscode: If confirmVotes returns true, take the nameCandidate, and ++ to votesCandidate of the   same type
Copy this If statement four times, one for each of the candidates, 2 president and 2 vp.
Else or If confirmvotes returns false, put output saying that  the votes were not confirmed.

}


}

假设我拥有所有这些代码,让我们看一下方法getVotes()和confrimVotes(),在getVotes()中,用户选择一个候选者,然后返回该候选者。我如何获得返回语句以显示其他方法中的其他位置?就像在confirmVote()中我想要这样做

 System.out.println("Your vote for President is: (PresidentialCandidate return statement");

但我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

这不是您问题的直接答案,但我认为通过利用面向对象编程的一些功能,您的代码可以变得更加简单。

您将针对不同位置的4个候选人的多种类型的信息存储为单独的变量,这使您的课程变得非常笨拙。

A(在我看来)更好的方法是一个Candidate类来存储有关单个候选人的信息,然后您的类看起来如下:

class Candidate {
    String Name;
    int votes;
}

class VoteRecorder {
     Candidate[] presidents;
     Candidate[] vicePresidents;

     Candidate myVoteForPresident;     //Or even make these both ints.
     Candidate myVoteForVicePresident;
}

课程可以进一步完善,但这将是一个开始。每当您看到多条信息描述同一实体被重复多次时,就可以通过添加一个类来代替它们来简化您的生活。

编辑(专门回答问题):

如果您想有效地执行以下操作:

  

System.out.println(“你对总统的投票是:( PresidentialCandidate return statement”);

你可以这样写:

String voteResult = getVotes();
System.out.println("Your vote for President is: " + voteResult);

或者在一行中:

 System.out.println("Your vote for President is: " + getVotes());

每次运行此代码时,都会提示用户输入。如果您想将结果保存到下次,则必须将其保存到属性,例如通过在类中包含一个字符串,并首先为其指定值。然后稍后使用它而不是局部变量voteResult