如何解决糟糕的操作数问题?

时间:2013-12-11 04:44:07

标签: 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: ");
        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);

    }
}

弹出的错误似乎是某种糟糕的操作数...
感谢

4 个答案:

答案 0 :(得分:2)

您需要将System.out.println("number of consonants are="+S.length()-c);更改为System.out.println("number of consonants are="+(S.length()-c));。原因是当程序简化你的方程时,会发生以下情况而没有额外的括号。

"Number of consonants are=" + S.length() - c
"Number of consonants are=" + 6 - 2
"Number of consonants are=6" - 2

因为你不能从String中减去某些东西,这意味着-操作数是坏的,你会得到一个糟糕的操作数异常。添加括号使其改为执行此操作。

"Number of consonants are=" + (S.length() - c)
"Number of consonants are=" + (6 - 2)
"Number of consonants are=" + 4
"Number of consonants are=4"

因为括号在那里,程序首先优先考虑方程的那部分,这解决了问题。这遵循操作顺序,您可以google阅读所有相关内容。

你可以向Strings添加内容的原因是,(取决于值),当你尝试在Java中的字符串上使用不是String的东西时,它会将该值转换为String然后添加它。例如,"I am " + 6变为"I am " + "6",变为"I am 6"

答案 1 :(得分:0)

字符串和原语不是二进制-的有效操作数 ONLY binary + operator对String和原始操作数有效。

Java Documentation 字符串转换 表示:

  

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

问题出在这句话中:

  

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

应该是

  

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

答案 2 :(得分:0)

String s ="something";
String vowelarray[] = {}//vowel array
int countVowel = 0;

for : iterate  vowelarray
{
   countVowel += StringUtils.countMatches(s, vowelarray[i]);
}

s.length //to get length of String. you can maniputlate countVowel and s.length

答案 3 :(得分:0)

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

int ascii = (int) character;

(糟糕的操作数问题已经解决了,所以我没有给出任何解释。)