【问题标题】:Uncompadible types: void cannot be converted to string [duplicate]不兼容的类型:void 无法转换为字符串 [重复]
【发布时间】:2016-05-30 15:07:44
【问题描述】:

各位程序员,大家好,我需要一些关于学校作业文本的帮助。

使用此文本我收到错误消息:无法编译的源代码 - 不兼容的类型:void 无法转换为 java.lang.String

我的意图是程序将获取一个句子,然后计算元音和辅音的数量并在对话窗口中显示它们。

我对编程很陌生,所以答案对你们所有人来说可能都很明显,但非常感谢您的帮助:D

所以要清楚,我的问题如下。如何修复 void to string 错误?

public static void main (String args[]) {

    String string1= JOptionPane.showInputDialog("Write a sentence.");
    int count = 0;
    int vowels = 0;
    int consonants = 0;

    for (int i = 0; i <string1.charAt(0); i++) {
            char ch = string1.charAt(i);
            if (ch == 'a' || ch == 'e' || ch == 'i' || 
                            ch == 'o' || ch == 'u')
            {
                    vowels++;
            }
            else
            { 
                    consonants++;
            }
           String finished= JOptionPane.showMessageDialog(null,"You have written " +vowels+ "vowels and you have written " +consonants+ "consonants");
    }
}

【问题讨论】:

  • 错误告诉你什么?
  • 我相信你的意思是i &lt;string1.length()
  • 错误应该告诉一个行号它发生在哪里。转到那条线,看看each method returns 是什么,以及你试图用它做什么。您很快就会发现错误。

标签: java string swing error-handling void


【解决方案1】:

如果你使用任何 IDE,这条线会向你抱怨

String finished= JOptionPane.showMessageDialog

因为showMessageDialog不返回任何东西,它是一个void方法,所以没有完成的String可以从中获取,它只是显示一个弹出窗口

【讨论】:

    【解决方案2】:
    String finished= JOptionPane.showMessageDialog(...)
    

    这是你的问题。

    public static void showMessageDialog(...)
    

    可以看到,方法showMessageDialog的返回类型是void。

    去掉“String finished=”就可以了。

    但是。由于其他错误,它不会按预期工作。在 for 循环中,条件

    i < string1.charAt(0)
    

    错了。

    但即使你修复了它,它也无法正常工作。你应该打电话

    JOptionPane.showMessageDialog(...)
    

    在循环之外,所以它只显示一次。

    即使您修复了所有这些错误,考虑到字符可能不是元音或辅音,它仍然无法正常工作。或者那个字母可以是大写的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 1970-01-01
      • 2015-04-28
      • 2018-08-30
      相关资源
      最近更新 更多