Java 为什么我得到这些没有合适的方法发现错误?

Java 为什么我得到这些没有合适的方法发现错误?,java,Java,我试着从课本上抄写这门课。据我所知,我复制的代码与它的外观一模一样,只是对变量名做了一些小改动。但是当我做任何事情时,两行代码number=getInt(Sc3,prompt)和d=getDouble(sc3,提示符)抛出错误,提示“找不到适用于getInt/getDouble(Scanner,String)的合适方法。这是为什么?我可以编写什么代码来修复此问题?下面是相关代码 import java.util.Scanner; public class Console { priva

我试着从课本上抄写这门课。据我所知,我复制的代码与它的外观一模一样,只是对变量名做了一些小改动。但是当我做任何事情时,两行代码
number=getInt(Sc3,prompt)
d=getDouble(sc3,提示符)抛出错误,提示“找不到适用于
getInt/getDouble(Scanner,String)
的合适方法。这是为什么?我可以编写什么代码来修复此问题?下面是相关代码

import java.util.Scanner;

public class Console {

   private static Scanner sc3 = new Scanner(System.in);

   public static String getString(String prompt) {
      System.out.print(prompt);
      String s = sc3.next();
      sc3.nextLine();
      return s;
   }

   public static int getInt(String prompt) {
      int number = 0;
      boolean isValid = false;
      while (isValid) {
         System.out.print(prompt);
         if (sc3.hasNextInt()) {
            number = sc3.nextInt();
            isValid = true;
         }else {
            System.out.println("Error! Entry must be an integer. Please try again.");
         }
         sc3.nextLine();
      }
      return number;
   }

   public static int getInt(String prompt, int minimum, int maximum) {
      int number = 0;
      boolean isValid = false;
      while (!isValid) {
         number = getInt(sc3, prompt);
         if (number <= minimum) {
            System.out.println("Error. User entry nust be greater than" + " " + minimum + " " + ".");
         } else if (number >= maximum) {
            System.out.println("Error. User entry must be less than" + " " + maximum + " " + ".");
         } else {
            isValid = true;
         }
      }
      return number;
   }

   public static double getDouble(String prompt) {
      double d = 0;
      boolean isValid = false;
      while (!isValid) {
         System.out.print(prompt);
         if (sc3.hasNextDouble()) {
            d = sc3.nextDouble();
            isValid = true;
         } else {
            System.out.println("Error. Invalid number. Try again.");
         }
         sc3.nextLine();
      }
      return d;
   }

   public static double getDouble(String prompt, double minimum, double maximum) {
      double d = 0;
      boolean isValid = false;
      while (!isValid) {
         d = getDouble(sc3, prompt);
         if (d <= minimum) {
            System.out.println("Error. Number must be greater than" + minimum + ".");
         }else if (d >= maximum) {
            System.out.println("Error. Number must be less than" + maximum + ".");
         }else {
            isValid = true;
         }
         return d;
      }
   }
}
import java.util.Scanner;
公共类控制台{
专用静态扫描仪sc3=新扫描仪(System.in);
公共静态字符串getString(字符串提示){
系统输出打印(提示);
字符串s=sc3.next();
sc3.nextLine();
返回s;
}
公共静态int getInt(字符串提示){
整数=0;
布尔值isValid=false;
while(有效){
系统输出打印(提示);
if(sc3.hasNextInt()){
number=sc3.nextInt();
isValid=true;
}否则{
System.out.println(“错误!输入必须是整数。请重试”);
}
sc3.nextLine();
}
返回号码;
}
公共静态int getInt(字符串提示,最小int,最大int){
整数=0;
布尔值isValid=false;
而(!isValid){
number=getInt(sc3,提示符);
如果(数量=最大值){
System.out.println(“错误。用户输入必须小于“+”+最大值+”);
}否则{
isValid=true;
}
}
返回号码;
}
公共静态双getDouble(字符串提示){
双d=0;
布尔值isValid=false;
而(!isValid){
系统输出打印(提示);
if(sc3.hasNextDouble()){
d=sc3.nextDouble();
isValid=true;
}否则{
System.out.println(“错误。无效数字。请重试”);
}
sc3.nextLine();
}
返回d;
}
公共静态双getDouble(字符串提示,最小值加倍,最大值加倍){
双d=0;
布尔值isValid=false;
而(!isValid){
d=getDouble(sc3,提示符);
如果(d=最大值){
System.out.println(“错误.数字必须小于“+最大值+”);
}否则{
isValid=true;
}
返回d;
}
}
}
Java编程语言支持重载方法,Java可以区分具有不同方法签名的方法。这意味着,如果类中的方法具有不同的参数列表,则它们可以具有相同的名称


因此,您缺少了
getInt(Scanner Sc3,String prompt)
getDouble(Scanner Sc3,String prompt)
方法。

之所以会出现错误,是因为没有名为
getInt
getDouble
的方法,它们都使用
Scanner
(Scanner Sc3,String prompt)和
String
(其中
prompt
是)作为参数。然而,有
getInt
getDouble
方法只需要一个
String
参数;也许你是想写
getInt(prompt)
getDouble(prompt)
来代替它?我修复了它,但现在我在解析时得到了一个“到达文件末尾”的结果“末尾的barckets出现错误。看起来不错,但在我尝试运行它时,它总是说它错了。不能只是看起来不错,必须很好(;->)。检查所有括号是否正确配对:很容易遗漏所需的右括号或插入多余的左括号。