Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序显示的结果比预期结果少一个_Java - Fatal编程技术网

Java程序显示的结果比预期结果少一个

Java程序显示的结果比预期结果少一个,java,Java,我在一个有竞争力的编码网站上做这个练习题。我们有一个场景,我们有一个智能浏览器,我们不需要输入“www”,也不需要输入元音。浏览器自己输入这两件事 我正在编写一个程序,显示智能web url中字符数与完整web url中字符数的比率。例如,www.google.com的智能url将是ggl.com。因此,程序显示为7/14。我这样做了,但我的显示器是6/14。i、 e少一个。它适用于每个测试用例。我不知道;我不知道问题出在哪里 Scanner sc = new Scanner(System.in

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

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

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--;

    }   

ggl.com
仍然包含一个元音,因此对于
o
,循环将减少
count
,程序将返回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())
      ...

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

然后将
count
设置为
count-3
@MarounMaroun,这将适用于
.com
URL,但不适用于
.edu
URL。如果在元音的情况下,您只需将
count
的减量设置为3,则可以将多个case语句置于另一个之后。因此,在你的case语句中,将去掉复制粘贴代码。@ Eran,甚至更烦人的。我想OP应该更精确地描述哪些元音应该去掉,哪些元音应该保留。明白了!这么愚蠢的错误,我完全忽略了那部分。谢谢