Java程序显示的结果少于所需的结果

时间:2015-01-21 08:58:17

标签: java

我在竞争激烈的编码网站上做这个练习题。我们有一个场景,我们有一个智能浏览器,我们不需要输入“www”。而且没有元音。浏览器自己输入这两件事。

我正在编写一个程序,显示智能网址中的字符数与完整网址的比率。即。例如,www.google.com的智能网址为ggl.com。因此,节目的显示将是7/14。我这样做了,但我的显示是6/14。即少一个。它适用于每个测试用例。我不知道问题出在哪里

Scanner sc = new Scanner(System.in);
    int t = sc.nextInt();// no of testcases!

    while(t > 0)
    {
        String st = sc.next();
        int count = st.length();
        count = count-4;
        int count1 = st.length();
      for(char da:st.toCharArray())
        {
            switch(da)
            {
                case 'a':
                    count  = count -1;
                    break;

                    case 'e':
                    count = count -1;
                    break;

                    case 'i':
                    count = count-1;
                    break;

                    case 'o':
                    count = count -1;//System.out.println(da);
                    break;

                    case 'u':
                    count = count -1;
                    break;
            }
        }

        System.out.print((count ) +"/" +count1) ;
        System.out.println();
        t--;

    }   

1 个答案:

答案 0 :(得分:10)

ggl.com仍然包含元音,因此您的循环会减少count的{​​{1}},而您的程序将返回6而不是7。

请注意,通常,网址的域名可以包含不同数量的元音 - 例如,ocomgov都有1,net有2,edu有0.您的代码应该忽略上一个fr后面的元音。

这可以解决您的问题:

.

这假定只有最后一个 .... String st = sc.next(); int count = st.length(); count = count-4; int count1 = st.length(); st = st.substring(0,st.lastIndexOf('.')); // get rid of the domain name for(char da:st.toCharArray()) ... 之后的元音应该保留在计数中。例如,如果您希望在.域中同时保留.co.ilo,则必须更改逻辑。