Java 关于不兼容类型的错误:无法将字符串转换为字符
我为扫描仪创建了一个方法:Java 关于不兼容类型的错误:无法将字符串转换为字符,java,incompatibletypeerror,Java,Incompatibletypeerror,我为扫描仪创建了一个方法: public static char getStatus() { Scanner kb = new Scanner(System.in); System.out.print("You are in state student or not(yes for Y/y,no for N/n)"); char state = kb.nextLine().charAt(0); if (state == 'Y'||state == 'y') {
public static char getStatus() {
Scanner kb = new Scanner(System.in);
System.out.print("You are in state student or not(yes for Y/y,no for N/n)");
char state = kb.nextLine().charAt(0);
if (state == 'Y'||state == 'y') {
String instate = "In State";
System.out.println(instate);
int statusfee = 5;
return instate;
} else if (state == 'N'||state == 'n') {
String outstate = "Out-of-State";
System.out.println(outstate);
int statusfee = 5+2;
return outstate;
} else {
String false = "FALSE";
System.out.print(false);
return false;
}
}
我试着打印出来供我选择。
例如:
System.out.println("Residencey:" + state);
当我输入“Y或Y”时,我想要
然后输出为Residencey:In状态
错误是:
错误:不兼容的类型:无法将字符串转换为字符
我不知道为什么,java不能返回字符串或句子吗?
我是java初学者,所以我不能使用一些困难的方法。您的方法返回类型是char,您返回的是string,这就是它显示错误的原因。 这是您的代码和正确的返回类型
public static String getStatus () {
Scanner kb = new Scanner (System.in);
System.out.print ("You are in state student or not(yes for Y/y,no for N/n)");
char state = kb.nextLine ().charAt (0);
if ((state == 'Y') || (state == 'y')) {
String instate = "In State";
System.out.println (instate);
int statusfee = 5;
return instate;
} else if ((state == 'N') || (state == 'n')) {
String outstate = "Out-of-State";
System.out.println (outstate);
int statusfee = 5 + 2;
return outstate;
} else {
String FALSE = "FALSE";
System.out.print (false);
return FALSE;
}
}
请将方法返回类型更改为
String
。范例
public class ScannerTest {
public static void main(String[] args) {
getStatus();
}
public static String getStatus() {
Scanner kb = new Scanner(System.in);
System.out.print("You are in state student or not(yes for Y/y,no for N/n)");
char state = kb.nextLine().charAt(0);
if (state == 'Y' || state == 'y') {
String instate = "In State";
System.out.println(instate);
int statusfee = 5;
return instate;
} else if (state == 'N' || state == 'n') {
String outstate = "Out-of-State";
System.out.println(outstate);
int statusfee = 5 + 2;
return outstate;
} else {
String myfalse = "FALSE";
System.out.print(myfalse);
return myfalse;
}
}
}
我更改了您的变量名。如果您的要求是
char status=getStatus()代码>
我觉得你们班看起来像:
public class ScannerTest {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
char status = getStatus(kb);
if (status == 'Y') {
// System.out.println("In State");
} else if (status == 'N') {
// System.out.println("Out-of-State");
} else {
// System.out.println("FALSE");
}
System.out.println("Status is " + status);
}
public static char getStatus(Scanner kb) {
System.out
.print("You are in state student or not(yes for Y/y,no for N/n)");
char state = kb.nextLine().charAt(0);
if (state == 'Y' || state == 'y') {
String instate = "In State";
System.out.println(instate);
int statusfee = 5;
return 'Y';
} else if (state == 'N' || state == 'n') {
String outstate = "Out-of-State";
System.out.println(outstate);
int statusfee = 5 + 2;
return 'N';
} else {
String myfalse = "FALSE";
System.out.print(myfalse);
return 'F';
}
}
}
我希望它能帮助您:)false
可以说是一个“保留字”,因此您不能将其用作变量名。您有两个返回字符串的代码路径和一个返回布尔值的代码路径。您想如何使用此方法?好的,问题不是关于“false”,而是关于如何返回句子。@ElliottFrischAnd这里是一个句子char status=getStatus()代码>是错误的。相同错误:不兼容类型:无法将字符串转换为my main方法中的字符。然后必须从getstatus()方法返回Y或N。因为字符串有很多字符,而字符只能有一个字符。所以问题是我需要System.out.println(“居住:+state”)代码>成为派驻人员:处于状态。你有什么建议吗?当我输入y时,只需输出如下语句:当我在您使用char status=getStatus()的位置输入nAt时,输入的语句为relidencey:In State或relidencey:Out of State;使用字符串state=getStatus();但是我们的要求是我们应该使用charstatus=getStatus()代码>我们的main应该是这样的:charstatus=getStatus(kb)这是事实。问题不在于false或myfalse。这是关于回归的。嗯……你的答案和阿苏一样,不起作用。我尝试将char更改为String。您能告诉我,您期望返回什么吗?YN.“处于状态”和“处于状态”。如果我输入Y或Y,我可以得到“状态”。如果我输入N或N,我可以得到“状态外”。我添加了下一个答案,希望它能帮助您:)请检查它Java说:publicstaticchargetstatus(Scanner-kb){
和Scanner-kb=new Scanner(System.in)的“错误:找不到符号”
.symbol:class Scanner location:class Test 3 error您需要这样调用Scanner kb=new Scanner(System.in);
char status=getStatus(kb);
@LeoLin您可以根据需要修改getStatus(Scanner kb)
)