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

Kir*_*han 2 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--;

    }   
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 10

ggl.com仍含有元音,所以你的循环会递减counto,和你的程序将返回6而不是7.

请注意,通常,URL的域名可以具有不同数量的元音 - 例如com,gov并且net具有1,edu具有2,fr具有0.您的代码应该忽略最后一个元音..

这可以解决您的问题:

  ....
  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())
      ...
Run Code Online (Sandbox Code Playgroud)

这假定只有最后一个元音.应该保留在计数中.例如,如果.co.il您希望同时保留计数o和域中的域i,则必须更改逻辑.