Java 如何解决坏操作数问题?

Java 如何解决坏操作数问题?,java,Java,大家好,大家都是这个平台的新手,只是想弄清楚下面的工作的正确方法是什么。任务是计算给定字符串中的字符和元音的数量 import java.util.Scanner; public class wordchk1 { public static void main(String args []) { Scanner scan = new Scanner(System.in); System.out.print("enter string: ");

大家好,大家都是这个平台的新手,只是想弄清楚下面的工作的正确方法是什么。任务是计算给定字符串中的字符和元音的数量

import java.util.Scanner;

public class wordchk1
{


    public static void main(String args [])
    {
        Scanner scan = new Scanner(System.in);
        System.out.print("enter string: ");
        String text = scan.nextLine();
        countVowel(text);

    }



    public static void countVowel(String S)
    {

        int i,c=0,ln;
        char ch;
        ln=S.length();

        for(i=0;i<ln;i++)
        {
            ch=S.charAt(i);
            if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u')
            {
                c++;
            }
        }

       System.out.println("number of vowels ="+c);
       System.out.println("number of consonants are="+S.length()-c);

    }
}
import java.util.Scanner;
公共类wordchk1
{
公共静态void main(字符串参数[])
{
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入字符串:”);
String text=scan.nextLine();
元音(文本);
}
公共静态void count元音(字符串S)
{
int i,c=0,ln;
char ch;
ln=S.长度();

对于(i=0;i您需要将
System.out.println(“辅音数为=”+S.length()-c);
更改为
System.out.println(“辅音数为=”+(S.length()-c));
。原因是,当程序简化您的方程时,以下情况会发生,而不需要额外的括号

"Number of consonants are=" + S.length() - c
"Number of consonants are=" + 6 - 2
"Number of consonants are=6" - 2
由于无法从字符串中减去某些内容,这意味着
-
操作数不正确,因此会出现错误操作数异常。添加括号会使操作数错误

"Number of consonants are=" + (S.length() - c)
"Number of consonants are=" + (6 - 2)
"Number of consonants are=" + 4
"Number of consonants are=4"
因为括号在那里,程序会首先对方程的这一部分进行优先级排序,从而解决问题。这遵循操作顺序,您可以阅读所有相关内容


可以向字符串中添加内容的原因是,(取决于值),当您尝试在Java中将非字符串的内容+到字符串中时,它会将该值转换为字符串,然后将其添加。例如,
“I am”+6
变为
“I am”+“6”
,这将变为
“I am 6”

字符串和基元对于二进制
-

只有
二进制+运算符
对字符串和基元操作数有效

对于字符串转换 说:

字符串转换(§5.4)仅将应用于二进制+运算符的操作数,当另一个操作数是字符串时,该操作数不是字符串

问题在于这句话:

System.out.println(“辅音数为=“+S.length()-c

应该是

System.out.println(“辅音的数量是=”+(S.length()-c)

你的
s.length()-c
不会给出辅音数。例如,你有一个字符串,中间有一个数字字符。在这种情况下,除非你进行某种验证,否则你的逻辑将失败。因此我建议将每个字符转换为ASCII,并比较
int
。然后你将得到实际结果

int ascii = (int) character;

(坏操作数问题已经解决,因此我不会给出任何解释。)

嗯,这就是错误发生的地方任何提示…?注意括号。你确定数字是辅音吗?标点符号呢?哇..!!太可笑了。如果你已经解决了这个问题,那么试着回答你自己的问题,因为这对其他人会有帮助
int ascii = (int) character;