2015-01-21 96 views
2

我在竞争对手的编码网站上执行此练习问题。我们有一个场景,我们有一个智能浏览器,我们不需要输入“www”。也不是元音。浏览器自己输入这两个东西。Java程序显示的结果比预期结果少1

我在写一个程序,它显示智能网址和完整的网址中字符数的比率。即。例如,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

然后将'count'设置为'count-3'。 – Maroun 2015-01-21 08:59:14

+0

@MarounMaroun这可以适用于'.com'网址,但不适用于'.edu'网址。 – Eran 2015-01-21 09:08:30

+0

如果'count'的减量是你在元音情况下要做的唯一的事情,你可以把多个case语句放在另一个之后。因此,将删除您的病例报告中的复制粘贴代码。 – KnutKnutsen 2015-01-21 09:08:58

回答

10

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

注意,在一般,url的域名可以有不同数量的元音 - 例如,com,govnet有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的数量,则必须更改逻辑。

+0

Got it!这样一个愚蠢的错误,我完全忽略了这一部分。谢谢 ! – 2015-01-21 09:01:51