2011-11-17 2 views
0

Je me suis cassé le cerveau pendant des heures en essayant de comprendre cela.(double, int) ne peut pas être appliqué à (double)

i ont la principale méthode qui est:

public static void main(String [] args) 
    { 
     double payRate; 
     double grossPay; 
     double netPay; 
     int hours; 

     Scanner input = new Scanner(System.in); 

     System.out.println("Welcome to the Pay Roll Program"); 

     printDescription(); 

     System.out.print("Please input the pay per hour: "); 
     payRate = input.nextDouble(); 

     System.out.println("\nPlease input the pay per hour: "); 
     hours = input.nextInt(); 
     System.out.println("\n"); 


     netPay = computePaycheck(netPay); 

     System.out.println("The net pay is $" + (netPay)); 
     System.out.println("We hope you enjoyed this program"); 

     System.exit(0); 

et la méthode qui a calculé le Netpay

public static double computePaycheck(double payRate, int hours) 
{ 


    double grossPay = computePaycheck(payRate*hours); 

    double netPay = (grossPay - (grossPay *.15)); 

    return netPay; 

} 

Mais je reçois l'erreur « computePaycheck (double, int) dans PayCheck ne peut pas être appliqué à (double) "

Je comprends en quelque sorte cela, mais je ne peux pas pour la vie de moi trouver un remède.

+0

quel IDE utilisez-vous pour le développement? – hanumant

Répondre

0

netPay = computePaycheck (netPay);

statiques doubles computePaycheck publiques (double payRate, heures int)

"computePaycheck (double, int) dans PayCheck ne peuvent pas être appliqués à (double)"

Votre méthode prend deux paramètres, un double et un int.

Vous ne pouvez l'appeler qu'avec ces deux (il vous manque le nombre d'heures dans l'appel).

netPay = computePaycheck (payRate, heures);

double grossPai = payRate * heures;

0

Dans votre méthode computePaycheck, vous avez la ligne suivante:

double grossPay = computePaycheck(payRate*hours); 

Ce passe un paramètre (le produit de payRate et hours) à la fonction computePaycheck, qui nécessite deux paramètres. Il semble que vous vouliez dire:

double grossPay = computePaycheck(payRate, hours); 

Mais vous devrez faire attention! Cela provoquera la répétition de votre programme à l'infini! Vous devrez déterminer comment calculer le salaire brut sans appeler cette fonction, car si vous l'appelez récursivement en lui-même, il n'y a pas de condition à partir de laquelle il retournera.

+0

Je l'ai compris! Je viens de faire 'static double publique computePaycheck (Double payRate, heures int) \t { \t \t \t \t \t à double grossPay = payRate * heures; \t \t \t \t double netPay = (grossPay - (grossPay * .15)); \t \t \t \t return netPay; \t \t \t} ' – brandonscott

0

Votre méthode prend deux paramètres - double payRate et int hours, mais vous ne double un spécifiant lorsque vous appelez computePaycheck dans votre principale méthode.

Vous ne savez pas exactement ce que vous avez l'intention de faire, mais les paramètres incompatibles devraient vous indiquer ce qui ne va pas dans votre programme.

2

1) Vous appelez une fonction avec 2 paramètres en ne dépassant que 1. Cela provoquera une erreur de compilation.

2) Lorsque vous appelez computePaycheck à partir de l'intérieur de lui-même qui va boucler et causer un débordement de la pile.

+0

Cela a du sens, j'ai été en mesure de corriger l'erreur. Je vous remercie! – brandonscott

0

La première instruction de votre méthode computePaycheck appelle computePaycheck avec un seul paramètre (un double) alors que le computePaycheck prend 2 paramètres (un double et un entier). C'est pourquoi votre code ne parvient pas à compiler.

Si vous "corrigez" cela en utilisant double grossPay = computePaycheck(payRate, hours); à la place, cela va compiler MAIS vous obtiendrez une récursion infinie! Vous ne voulez pas simplement faire double grossPay = payRate*hours;?

Questions connexes