2015-07-24 1 views
-4

J'essaie généralement d'apprendre sur les méthodes d'appel et je me demande pourquoi cet exercice simple ne fonctionne pas .. (également intéressé de savoir si je peux assigner un int généré à un char (acter) au fin de tout)Méthode d'appel simple en java

public class Run { 

    public static void main(String args[]) { 
     int y = makeMove(int x); 
     System.out.println(y); 
    } 

    public static makeMove(int x) { 
     java.util.Scanner keyboard = new java.util.Scanner(System.in); 
     int i = 0; 
     do { 
      System.out.print("please enter a number 1-9 " + i); 
      i = keyboard.nextInt(); 
      if (i < 0 || i > 9) { 
       System.out.println("Not a valid selection. Please Re-enter: "); 
      } 
     } while (i < 0 || i > 9); 

     return i; 
     int x = i; 
    } 
} 
+0

Vous ne spécifiez pas le type de paramètre dans l'appel de méthode, uniquement dans la signature. De plus, votre méthode makeMove nécessite un type de retour dans sa signature. Et oui, char et ints sont interchangeables en java. –

+0

1> Vous n'avez pas déclaré x 2> y = makeMove (x); il ne devrait pas être y = makeMove (int x); 3> return devrait être la dernière déclaration. J'ai écrit int x = i; après le retour je; ce qui est incorrect 4> u déclaré x deux fois. ce qui n'est pas autorisé.5> Il devrait être public statique int makeMove (int x) vous avez manqué le type de retour int dans la signature de la méthode 6>} accolade est manquant dans la méthode principale – Bikku

Répondre

0

Tu ne peux pas déclarer une variable dans un appel de fonction

public static void main (String args[]) { 

int y; 

y = makeMove(int x); 

System.out.println(y); 

Vous devez passer une valeur entière en makeMove. so ..

y= makeMove(0); 

ou

int x=0; 
y=makeMove(x); 

également à convertir un nombre entier en caractères que vous pouvez utiliser ...

String conversion; 
conversion = Integer.toString(42); 

La variable chaîne n'est pas une variable de caractère, mais il vous arrive à mi-chemin.

0

Je pense que vous avez brouillé vos parenthèses et une autre syntaxe. Vous essayez de définir une fonction dans Main. Tu ne peux pas faire ça. De même, vous ne devez pas passer x car vous ne l'utilisez jamais. Allons-y étape par étape.

public static makeMove(int x) { 

Vous n'utilisez jamais après la déclaration de retour, ce qui est interdit puisque vous ne serez jamais exécuter quoi que ce soit après la déclaration de retour. Vous devez changer la fonction de

public static makeMove() { 

Ensuite, nous regardons votre boucle while

do 
{ 
    System.out.print("please enter a number 1-9 " + i); 
    i = keyboard.nextInt(); 
    if (i < 0 || i > 9) { 
     System.out.println("Not a valid selection. Please Re-enter: ");  
    } 
} 
while (i < 0 || i > 9); 

De la logique, il semble que vous voulez accepter 0-9. Je changerais cela

do 
{ 
    System.out.print("please enter a number 0-9 "); 
    i = keyboard.nextInt(); 
    if (i < 0 || i > 9) { 
     System.out.println("Not a valid selection. Please Re-enter: ");  
    } 
} 
while (i < 0 || i > 9); 

Et d'après ce que je l'ai mentionné avant, vous devez supprimer l'affectation à x après le retour

return i; 

}

Ainsi, le code final ressemblerait à ceci:

import java.lang.System.*; 

public class Run { 

    public static int makeMove() { 

     java.util.Scanner keyboard = new java.util.Scanner(System.in); 

     int i = 0; 

     do 
     { 
      System.out.print("please enter a number 0-9 "); 
      i = keyboard.nextInt(); 
      if (i < 0 || i > 9) { 
       System.out.println("Not a valid selection. Please Re-enter: ");  
      } 
     } 
     while (i < 0 || i > 9); 

     return i; 

    } 
    public static void main (String args[]) { 

     int y; 

     y = makeMove(); 

     System.out.println(y); 
    } 

}