2016-11-15 3 views
-2

поэтому в 4-м методе я пытаюсь определить победителя, но он говорит, что int не может быть преобразован в java.lang.String и да, я должен использовать различные методы, и если вы найдете что-нибудь еще неправильно с кодом, дайте мне знать, спасибонесовместимые типы: int не может быть преобразован в java.lang.String

import java.util.Random;// importing the random class to generate random number 
import javax.swing.JOptionPane;//importing the JOptionPane to use the pop up windows and menu 
public class TiriBark 
{ 
    private static int ComputerWin =0; // 0 is for loss and 1 for win 
    private static int UserWins =0; // 0 is for loss and 1 for win 
    private static int tie=0; // if it's a tie the value will be 1 
    private static int Comp; // holds the value of the random number generated by the computer 
    private static int user; // holds users choice of rock papper or scissor 
    public static void main(String[] args) // main method 
    { 
    Computer(); 
    user(); 
    } 
    /**this method generated a random number between 1 and 3 
    *@return Comp 
    */ 
    public static int Computer() 
    { 

    Random rand = new Random(); 
    int Comp = rand.nextInt(3)+1; 
    return Comp;} 
    /**this method asked the user to enter his choice of rock paper or scissor 
    *@return user 
    */ 
    public static int user(){ 
    String User = JOptionPane.showInputDialog("Enter 1 for rock 2 for paper and 3 for scissor "); 
    int user = Integer.parseInt(User); 
    return user; } 
    /** this method calculates and determines the winner and if possible a tie 
    *@return ComputerWin 
    *@return UserWins 
    *@return tie 
    */ 
    public static String resutls() { 
    if (user == Comp) { 
     tie =1; } 
    if (user==1 && Comp == 2){ 
     ComputerWin=1; } 
    if (user ==1 && Comp ==3){ 
     UserWins=1;} 
    if (user ==2 && Comp ==1){ 
     UserWins=1;} 
    if (user ==2 && Comp == 3){ 
     ComputerWin=1;} 

    if (user ==3 && Comp ==1) { 
     ComputerWin=1; } 

    if (user ==3 && Comp ==2){ 
     UserWins=1;} 
    return UserWins; 
    return ComputerWin; 
    return tie; 

    } 
} 
+1

Все значения, возвращаемые из 'resutls()', являются значениями 'int'. Я предлагаю сделать тип возвращаемого метода be 'int' –

+0

Вы пытаетесь вернуть 3 значения? – bradimus

+0

yes bradimus, но я догадываюсь, что это невозможно –

ответ

0

Дать это:

return UserWins; 
return ComputerWin; 
return tie; 

вы создаете мертвый код, потому что функция заканчивается на первом вернуть. Если вы хотите бросить переменную в INT в Строка просто сделать:

return UserWins + ""; 
+0

Должен ли я делить этот метод на 3 других метода? –

+0

'return Integer.toString (UserWins);' более четко выражает намерение. – bradimus

+0

Вы изменяете три статические переменные class – Dante

0

UserWins действительно является целым числом. Чтобы преобразовать целое число в строку, вы можете:

String result = "" + UserWins; 
return result; 

Это автоматически преобразует целые числа в строки. Есть много других способов сделать это же преобразование.

+1

'return Integer.toString (UserWins);' более четко выражает намерение. – bradimus

0

Одной из проблем с вашим кодом является три оператора возврата в конце рассматриваемого метода.

public static String resutls() { 
    if (user == Comp) { 
     tie =1; } 
    if (user==1 && Comp == 2){ 
     ComputerWin=1; } 
    if (user ==1 && Comp ==3){ 
     UserWins=1;} 
    if (user ==2 && Comp ==1){ 
     UserWins=1;} 
    if (user ==2 && Comp == 3){ 
     ComputerWin=1;} 

    if (user ==3 && Comp ==1) { 
     ComputerWin=1; } 

    if (user ==3 && Comp ==2){ 
     UserWins=1;} 
    return UserWins; 
    return ComputerWin; 
    return tie; 

С тем, как написано здесь, программа будет возвращать UserWins независимо от того, что только потому, что это будет следующий код после проверки, кто выиграл. То, что вы хотите сделать, - это поставить операторы return внутри вас, если инструкции. Так что это будет делать, когда вызывается метод, он будет проверять операторы if и в зависимости от того, какой из них правильный, будет выполняться соответствующий оператор return. Попробуйте что-то вроде этого:

if(user == Comp) 
{ 
    return tie; 
} 
else if(user == 1 && Comp == 2) 
{ 
    return ComputerWin; 
} 

Для вашей проблемы с строкой; мой первый вопрос: нужен ли вам метод для возврата строки? Проблема здесь в том, что объявление метода: public static String results(). Это должно возвращать строку, что означает, что оператор return должен быть строковым. Изменение его на тип int должно устранить вашу проблему.