Java动态获取用户输入及解决方法调用参数不匹配错误
问题解决与代码修正
错误原因
出现The method mile(double, double, double) in the type P1 is not applicable for the arguments()错误,是因为mile方法定义要求传入3个double类型参数,但调用时mile()未传任何参数,参数不匹配导致报错。此外原方法中mpg是通过miles/gallons计算得出的,不需要作为参数传入,属于冗余参数。
修改步骤
- 重构
mile方法:移除不需要的mpg参数,只保留miles和gallons作为输入参数,在方法内部计算mpg。 - 调用
mile方法时,传入用户输入的miles和gallons变量,保证参数匹配。 - 修正代码中的拼写错误:
milkes改为miles,uses改为used,修正输出文本的语法问题。 - 增加对用户姓名的输出,让程序逻辑更完整。
修正后的完整代码
package p1; import java.util.Scanner; public class P1 { // 重构方法,只接收miles和gallons参数 public static void mile(double miles, double gallons) { double mpg = miles / gallons; System.out.println("You drove " + miles + " miles"); System.out.println("You used " + gallons + " gallons"); System.out.println("The mpg is " + mpg); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter your name : "); String name = sc.nextLine(); // 输出用户姓名 System.out.println("Hello, " + name + "!"); System.out.println("Enter the value of miles:"); double miles = sc.nextDouble(); System.out.println("Enter the value of gallons:"); double gallons = sc.nextDouble(); // 传入正确的参数调用方法 mile(miles, gallons); sc.close(); // 关闭Scanner资源 } }
说明
- 方法参数调整:
mpg是计算结果,不需要从外部传入,所以方法只需要接收必要的输入参数miles和gallons。 - 参数匹配:调用
mile(miles, gallons)时,传入用户输入的两个变量,和方法定义的参数数量、类型完全匹配,解决了报错问题。 - 细节优化:修正拼写错误、添加空格让输出更易读、关闭
Scanner资源避免资源泄漏,同时增加了姓名输出,让交互更友好。
内容的提问来源于stack exchange,提问作者vishnu97
相关产品推荐
相关产品推荐

