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出现错误。看起来不错,但在我尝试运行它时,它总是说它错了。不能只是看起来不错,必须很好(;->)。检查所有括号是否正确配对:很容易遗漏所需的右括号或插入多余的左括号。