题目描述

牛村正在进行村长选举,投票人一人一票,牛可乐是候选人A(投票代号为1)、牛能是候选人B(投票代号为2)和牛妹是候选人C(投票代号为3),其他投票代号无效。
投票列表用以-1表示结束,请分别统计出他们的得票数。谁的得票超过全部投票人数的半数,就输出谁当选为村长,如“A-yes”表示A当选,全部不过半数,输出“all-NO”。

输入描述:

输入一行,若干个整数,以-1结尾

输出描述:

输出五行,前三行表示三个候选人的表票数,然后是总的有效票数,最后一行表示选举结果。
----------------------------------------------------------------------------------------

自己的思考


    联想到之前在写编程入门时遇到的编程小坑中关于Scanner类中各个方法的使用细节,
于是就先用scan.nextLine()这个方法将所有的投票一次性输入然后再对输入的数据进行处理的方式进行编程,
但是在将数字字符串转换为数值的时候总会出现空字符串不能转换为数字的编译错误。
为了解决这个问题,我在想,既然投票的结果都是数字,
那么将空字符串特殊处理一下(遇到它的时候就不对它进行任何操作直接跳过),
然后去掉数值为-1的数字,最后进行统计,然后输出统计结果。
可是虽然题目给的测试样例的确能通过,提交后却只有45%的样例通过,
真的是百思不得其解(如果有高手看了这篇文章的话还希望能够指点一二)
   这是之前的状态,现在在想,如果这样不行,那还是一一输入吧,反正都是数字,
不会出现有字符串输入的情况,也还是不会太麻烦的。
    同样的思路,只是换了一种输入方式,解题难度截然不同。真实的感受到了做一件事情方式方法的重要性。、
这也算是一个编程经验吧,遇到只有数值输入且需要处理这些数字的题目,最好用scan.nextInt()之类方法,
千万别先以字符的方式输入在将字符处理成数值,然后再对这些数值进行处理。
这里稍有不慎就会有各种奇怪问题的出现,投机取巧想省时间却浪费了更多的时间。😂