在 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) == ' ')

使用== 比较intchar

【讨论】:

如果这样做,我会收到以下错误: HangmanSB.java:19: error: incomparable types: char and String if (sentence.charAt(i) == " ") ^ 1 error 双引号也是错误的。需要是' '(一个字符)而不是" "(一个字符串)。【参考方案4】:

有两种类型的错误=" "

要比较 char 值,请使用 ' '==

像这样:

if (sentence.charAt(i) == ' ')

【讨论】:

以上是关于在 java 中运行 charAt 时出现意外的类型错误的主要内容,如果未能解决你的问题,请参考以下文章

启动logcat时出现意外错误。尝试重新选择设备。] EO

在 Java 中创建列表列表时出现意外输出

在 Typescript 项目上运行业力覆盖时出现意外令牌

尝试在python子进程中运行rsync时出现意外的远程arg错误

运行笑话测试时出现意外的令牌导入错误

错误:运行应用程序时出现错误“意外的空值”