Java 如何修复函数调用中的“找不到符号”?
我用两种不同的数据类型实现方法重载。这就是我最终得到代码的原因。 但现在它找不到符号c和d。有什么帮助吗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.
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;
}
}
}