这个是题目网址:http://student.youkuaiyun.com/mcd/topic/235300/753730
注意:
加上了9L@jetvster的代码,很神奇,第一眼看以为还不怎么样,结果挺牛的
感觉7L@SeeMore91,8L哥们的思路挺好的,学习一下下
刚才看到3L的回复,在此声明,下面的只是我自己的代码与思路,请不要以为这是讲解,只是上个代码请看一下而已,放上来为的求个指导&指点
另外,输出语句只是为了测试结果的,请无视!如果需要完全满足题意,将代码第26行修改为: System.out.println(txt); 再在switch加上default部分,语句就一个continue,直接放弃本轮执行下一次循环
本来一看感觉很简单,但是写了一会儿之后越来越感觉不是那么简单,,于是我就充分利用咱们Java面向对象的特性,写完了。
上代码(感觉差不多是这样了,有错漏的地方还希望前辈们指正一下)
PS:刚查了下百科,原来正整数是大于0的整数,所以,代码改一下
- /**
- * 依序遍历0到100闭区间内所有的正整数,
- * 如果该数字能被3整除,则输出该数字及‘*’标记;
- * 如果该数字能被5整除,则输出该数字及‘#’标记;
- * 如果该数字既能被3整除又能被5整除,则输出该数字及‘*#’标记。
- */
- public class Print {
- public static void main(String[] args){
- new Print().prints();
- }
- private void prints(){
- for(int i = 1;i <= 100;i++){
- String txt = "";
- int flag = 0;
- if (op3(i)){
- flag += 1;
- }
- if (op5(i)){
- flag += 2;
- }
- switch (flag){
- case 1:txt = "*";break;
- case 2:txt = "#";break;
- case 3:txt = i+"#";break;
- }
- System.out.println("当前数字:" + i + "---->" + txt);
- }
- }
- private boolean op3(int i){
- if (i % 3 == 0) {
- return true;
- }
- return false;
- }
- private boolean op5(int i) {
- if (i % 5 == 0) {
- return true;
- }
- return false;
- }
- }
输出:
- 当前数字:1---->
- 当前数字:2---->
- 当前数字:3---->*
- 当前数字:4---->
- 当前数字:5---->#
- 当前数字:6---->*
- 当前数字:7---->
- 当前数字:8---->
- 当前数字:9---->*
- 当前数字:10---->#
- 当前数字:11---->
- 当前数字:12---->*
- 当前数字:13---->
- 当前数字:14---->
- 当前数字:15---->15#
- 当前数字:16---->
- 当前数字:17---->
- 当前数字:18---->*
- 当前数字:19---->
- 当前数字:20---->#
- 当前数字:21---->*
- 当前数字:22---->
- 当前数字:23---->
- 当前数字:24---->*
- 当前数字:25---->#
- 当前数字:26---->
- 当前数字:27---->*
- 当前数字:28---->
- 当前数字:29---->
- 当前数字:30---->30#
- 当前数字:31---->
- 当前数字:32---->
- 当前数字:33---->*
- 当前数字:34---->
- 当前数字:35---->#
- 当前数字:36---->*
- 当前数字:37---->
- 当前数字:38---->
- 当前数字:39---->*
- 当前数字:40---->#
- 当前数字:41---->
- 当前数字:42---->*
- 当前数字:43---->
- 当前数字:44---->
- 当前数字:45---->45#
- 当前数字:46---->
- 当前数字:47---->
- 当前数字:48---->*
- 当前数字:49---->
- 当前数字:50---->#
- 当前数字:51---->*
- 当前数字:52---->
- 当前数字:53---->
- 当前数字:54---->*
- 当前数字:55---->#
- 当前数字:56---->
- 当前数字:57---->*
- 当前数字:58---->
- 当前数字:59---->
- 当前数字:60---->60#
- 当前数字:61---->
- 当前数字:62---->
- 当前数字:63---->*
- 当前数字:64---->
- 当前数字:65---->#
- 当前数字:66---->*
- 当前数字:67---->
- 当前数字:68---->
- 当前数字:69---->*
- 当前数字:70---->#
- 当前数字:71---->
- 当前数字:72---->*
- 当前数字:73---->
- 当前数字:74---->
- 当前数字:75---->75#
- 当前数字:76---->
- 当前数字:77---->
- 当前数字:78---->*
- 当前数字:79---->
- 当前数字:80---->#
- 当前数字:81---->*
- 当前数字:82---->
- 当前数字:83---->
- 当前数字:84---->*
- 当前数字:85---->#
- 当前数字:86---->
- 当前数字:87---->*
- 当前数字:88---->
- 当前数字:89---->
- 当前数字:90---->90#
- 当前数字:91---->
- 当前数字:92---->
- 当前数字:93---->*
- 当前数字:94---->
- 当前数字:95---->#
- 当前数字:96---->*
- 当前数字:97---->
- 当前数字:98---->
- 当前数字:99---->*
- 当前数字:100---->#
- Process finished with exit code 0
9L的代码,好不容易看明白,修改了一下下,更符合题意
- public class Test {
- public static void main(String[] args){
- int max = 100;
- int flag3 = 1; // 正整数不包括0,所以从1开始计数
- int flag5 = 1;
- int sum3 = 0; // i%3 == 0 && i%15 == 0
- int sum5 = 0; // i%5 == 0
- while (sum3 < max || sum5 < max) {
- sum3 = flag3 * 3;
- sum5 = flag5 * 5;
- if (sum3 < sum5) {
- System.out.println(sum3 + ":*");
- flag3++;
- } else if (sum3 > sum5) {
- System.out.println(sum5 + ":#");
- flag5++;
- } else {
- System.out.println(sum3 + ":*#");
- flag5++;
- flag3++;
- }
- }
- }
- }
- 3:*
- 5:#
- 6:*
- 9:*
- 10:#
- 12:*
- 15:*#
- 18:*
- 20:#
- 21:*
- 24:*
- 25:#
- 27:*
- 30:*#
- 33:*
- 35:#
- 36:*
- 39:*
- 40:#
- 42:*
- 45:*#
- 48:*
- 50:#
- 51:*
- 54:*
- 55:#
- 57:*
- 60:*#
- 63:*
- 65:#
- 66:*
- 69:*
- 70:#
- 72:*
- 75:*#
- 78:*
- 80:#
- 81:*
- 84:*
- 85:#
- 87:*
- 90:*#
- 93:*
- 95:#
- 96:*
- 99:*
- 100:#