【问题标题】:Java program displays the result one less than desired resultJava 程序显示的结果比期望的结果少一
【发布时间】:2015-01-21 08:58:17
【问题描述】:

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

我正在编写一个程序,它显示智能网址中的字符数与完整网址的比率。 IE。例如,www.google.com 的智能 URL 将是 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--;

    }   

【问题讨论】:

  • 然后将count设置为count - 3
  • @MarounMaroun 这适用于.com 网址,但不适用于.edu 网址。
  • 如果count 的减量是在元音的情况下唯一要做的事情,则可以将多个 case 语句放在另一个之后。所以将摆脱你的案例陈述中的复制粘贴代码。
  • @Eran 和更烦人的 '.co.uk'
  • @dwana 我没有考虑到这一点。我想 OP 应该更精确地确定哪些元音应该删除,哪些元音应该保留。

标签: java


【解决方案1】:

ggl.com 仍然包含一个元音,因此您的循环将递减 count 以获得 o,并且您的程序将返回 6 而不是 7。

注意,一般情况下,url的域名可以有不同数量的元音——例如comgovnet有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 域中同时保留 oi,则必须更改逻辑。

【讨论】:

  • 明白了!如此愚蠢的错误,我完全忽略了那部分。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多