方法不返回正确的值(Java)

时间:2016-09-28 03:19:50

标签: java methods return

public static char getChoice(char choice) {
    System.out.println("\nTake or stop? (t/s): ");
    choice = sc.next()
        .charAt(0);
    if (choice == 't') {
        System.out.print("Player Took");
        choice = 't';

    } else if (choice == 's') {
        System.out.println("Player didnt take");
        choice = 's';

    }
    return choice;
    //return answer;
}

这是主要调用它的部分

        //Checking if players score is 21 when the game begins
    if(ptotal == 21)
    {
        System.out.print("\nPlayer wins!");
    }
    //Checking if the computers score is 21 when the game
    else if(ctotal == 21)
    {
        System.out.print("\nComputer wins!");
    }
    //Checking if both scores are 21 which would be a tie
    else if(ctotal == 21 && ptotal == 21)
    {
        System.out.print("\nTie!");
    }
    //If none above is true it will proceed to the loop
    else
    {
        //getChoice(answer);
        while(ptotal < 21 && answer == 't')//Loop conditions
        {
            getChoice(answer);
            //Prompting user if they would like to take or stop
            /*System.out.println();
            System.out.print("Take or stop? (t/s): ");
            answer = sc.next().charAt(0);
            System.out.println("");*/


            //Checking if the input is 't'
            if(answer == 't')
            {
                //If true another card will be generated and added to the total value
                System.out.print("\nPlayer draws: ");
                pCard = getCard();
                showCard(pCard);
                ptotal += cardValue(pCard);

            }
            //Checking if input is 's'
            else if(answer == 's')
            {
                System.out.println("Player Stops");
            } 
        }

这应该要求用户输入一个char输入,然后根据if语句返回一个特定的char,但每当它从main调用它时它返回它就不会显示那些字符串但是它不会设置选择正确的char。请帮助。

1 个答案:

答案 0 :(得分:1)

//always post an MCVE
//see http://stackoverflow.com/help/mcve
import java.util.Scanner;

public class Test{

    public static void main(String[] args){

        char c = getChoice();
        System.out.println("returned value is "+ c);
    }

    //why pass a value choise if you read it from user ?
    public static char getChoice(/*char choice*/)
    {
        System.out.println("\nTake or stop? (t/s): ");

        Scanner sc = new Scanner( System.in );
        char choice = sc.next().charAt(0);
        if(choice == 't')
        {
            System.out.println("Player Took");
            // choice is already equal to `t`. This is not needed
            // choice = 't';

        }

        else if(choice == 's')
        {
            System.out.println("Player didnt take");
            // choice is already equal to `s`. This is not needed
            choice = 's';

        }
        return choice;
    }
}