2017-03-27 2 views
-3

Je mettais en œuvre une surcharge de méthode avec 2 types de données différents. C'est ainsi que j'ai fini avec le code. Mais maintenant, il ne peut pas trouver les symboles c et d. de l'aide ?Comment réparer 'can not find symbol' dans un appel de fonction?

import java.util.*; 
import java.lang.*; 
public class LargestOfTwoTest{ 
    public static void main(String args[]) throws Exception{ 
     Scanner scan = new Scanner(System.in); 



     System.out.println("Enter two numbers, and I wiil show you which one's largest!\n"); 
     System.out.println("Enter two numbers: "); 
     double a = scan.nextDouble(); 
     double b = scan.nextDouble(); 

     if (a==(Math.floor(a))){ 
      int c = (int) a; 
     } 
     else{ 
      double c = a; 
     } 

     if (b==(Math.floor(b))){ 
      int d = (int) b; 
     } 
     else { 
      double d = b; 
     } 

     System.out.print("Largest of the numbers is "+largest(c,d)); 
    } 




    public static int largest(int x, int y){ 
     if (x>y) 
      return x; 
      //System.out.print("Largest of the numbers is "+x); 
     else 
      return y; 
      //System.out.print("Largest of the numbers is "+y); 
    } 
    public static double largest(double x, double y){ 
     if (x>y) 
      return x; 
      //System.out.print("Largest of the numbers is "+x); 
     else 
      return y; 
      //System.out.print("Largest of the numbers is "+y); 
    } 
} 

indique l'erreur dans cette ligne

System.out.print("Largest of the numbers is "+largest(c,d)); 

..

LargestOfTwoTest.java:29: erreur: ne peut pas trouver le symbole

(c et d)

+5

Vous avez déclaré 'c' et' d' hors de portée pour votre facturation cation de 'plus grand ', cela n'a rien à voir avec une surcharge. – Mena

+0

Dans une seule portée, vous ne pouvez avoir qu'une déclaration d'une variable. Votre tentative de création de déclarations différentes en plaçant les déclarations dans un 'if' ne fonctionnera pas car les blocs' if' sont des étendues séparées et la déclaration sortira de la portée dès que le bloc sera terminé. – RealSkeptic

+0

Vous devez reformuler votre titre pour qu'il soit spécifique à une question, ou vous allez continuer à être déprimé. Juste une tête amicale. – samosaris

Répondre

0
import java.math.BigDecimal; 
import java.util.Scanner; 

public class LargestOfTwo { 

    private Scanner scanner; 
    private Number a; 
    private Number b; 

    public static void main(String args[]) throws Exception { 
     LargestOfTwo app = new LargestOfTwo(); 
     app.start(); 
    } 

    private void start() { 
     readInputs(); 
     Number largest = compare(a, b); 
     System.out.print("Largest of the numbers is: " + largest); 
    } 

    private void readInputs() { 
     scanner = new Scanner(System.in); 
     System.out.println("Enter two numbers, and I will show you which one is largest\n"); 
     a = readInput(); 
     b = readInput(); 
    } 

    private Number readInput() { 
     Double d = scanner.nextDouble(); 
     if (d == Math.floor(d)) { 
      return d.intValue(); 
     } else { 
      return d; 
     } 
    } 

    private Number compare(Number x, Number y) { 
     if (new BigDecimal(x.floatValue()).compareTo(new BigDecimal(y.floatValue())) > 0) { 
      return x; 
     } else { 
      return y; 
     } 
    } 
} 
+0

omg, merci pour cela, Je ne pouvais pas exécuter le programme, mais encore fait des progrès, merci .. – JoeTinnySpace

+0

http://imgur.com/a/lP9is c'est le problème maintenant, puisque je ne peux pas comprendre pourquoi, je soumets ceci pour mon devoir, La logique est forte avec celui-ci. :) – JoeTinnySpace

+0

Apparemment, une accolade fermante est manquante dans votre code –