在 java 中运行 charAt 时出现意外的类型错误
Posted
技术标签:
【中文标题】在 java 中运行 charAt 时出现意外的类型错误【英文标题】:Unexpected type error while running charAt in java 【发布时间】:2018-10-03 16:11:39 【问题描述】:尝试在 java 中运行小程序时,出现以下错误:
HangmanSB.java:19: error: unexpected type
if (sentence.charAt(i) = " ")
^
required: variable
found: value
1 error
我尝试阅读此网站上发布的类似问题的答案,但我似乎仍然无法理解如何修复程序给我的错误。
import java.util.Scanner;
class HangmanSB
public static void main(String[] args)
Scanner keyboard = new Scanner(System.in);
String sentence = keyboard.nextLine();
int turns = keyboard.nextInt();
for (int turnsLeft = turns; turnsLeft > 0; turnsLeft--)
int length = sentence.length();
for (int i = 0; i < length; i++)
if (sentence.charAt(i) = " ")
System.out.println(" ");
else
System.out.print("_");
【问题讨论】:
How to check if a char is equal to an empty space?的可能重复=
是赋值运算符,==
是相等比较运算符。你不能给函数调用赋值。
编译器抱怨分配=
而不是==
,字符也应该用单引号括起来
【参考方案1】:
有两个错误:
public char charAt(int index)
方法返回char
和
你需要使用==
而不是赋值运算符=
因此使用:
if (sentence.charAt(i) == ' ')
System.out.println(" ");
【讨论】:
【参考方案2】:if (sentence.charAt(i) == ' ')
【讨论】:
正确的解决方案,但最好解释一下为什么会这样解决,这样他们就可以学习和理解并避免将来出现问题【参考方案3】:你的错误在这里:
if (sentence.charAt(i) = " ")
改成这个
if (sentence.charAt(i) == ' ')
使用==
比较int
或char
【讨论】:
如果这样做,我会收到以下错误: HangmanSB.java:19: error: incomparable types: char and String if (sentence.charAt(i) == " ") ^ 1 error 双引号也是错误的。需要是' '
(一个字符)而不是" "
(一个字符串)。【参考方案4】:
有两种类型的错误=
和" "
要比较 char 值,请使用 ' '
和 ==
像这样:
if (sentence.charAt(i) == ' ')
【讨论】:
以上是关于在 java 中运行 charAt 时出现意外的类型错误的主要内容,如果未能解决你的问题,请参考以下文章