Java 如何修复函数调用中的“找不到符号”?

Java 如何修复函数调用中的“找不到符号”?,java,overloading,Java,Overloading,我用两种不同的数据类型实现方法重载。这就是我最终得到代码的原因。 但现在它找不到符号c和d。有什么帮助吗 import java.util.*; import java.lang.*; public class LargestOfTwoTest{ public static void main(String args[]) throws Exception{ Scanner scan = new Scanner(System.in); System.

我用两种不同的数据类型实现方法重载。这就是我最终得到代码的原因。 但现在它找不到符号c和d。有什么帮助吗

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);
    }
}
显示此行中的错误

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

java:29:错误:找不到符号


c和d

您已经声明c和d超出了调用最大值的范围,这与重载无关。在单个范围中,一个变量只能有一个声明。您试图通过将声明放入if中来创建不同的声明是行不通的,因为if块是单独的作用域,并且一旦完成了该块,声明就超出了作用域。您应该将标题改为特定于问题,否则您将继续被否决。只是一个友好的提示。啊,明白了,谢谢,java中有一个数据类型,可以存储整数和双精度。该程序是为我的作业准备的,我刚刚开始练习Java,所以请随时提供帮助。天哪,谢谢你,我无法运行该程序,但仍然取得了进展,谢谢。。这就是现在的问题,因为我不明白为什么,我把这个提交给我的作业,这个逻辑很强另外,我的代码创建了一个LargestOfTwo的实例,其中包含扫描器字段和两个数字。这些在方法readInputs中分配。您复制了方法,但没有复制必需的字段,因此无法使用。
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;
        }
    }
}