当前位置 : 首页 » 互动问答 » 正文

在一小段Java代码中将343改为42

分类 : 互动问答 | 发布时间 : 2018-04-27 15:05:57 | 评论 : 4 | 浏览 : 73 | 喜欢 : 0

我知道,这种类型的问题可能被认为不适合StackOverflow的范围。如果它被推倒 - 我会将它删除,但我真的觉得它很有趣。

我发现了以下有趣的面试任务,但我仍然没有看到任何聪明/棘手的解决方案,我想知道人们会想出什么。

以最少的行数扩展下面的代码块,使得它的答案总是42。您不允许使用赋值(包括增量)并修改现有的代码行<public transcript> public class Question {     public static void main(String [] args){         int iters = 0;         for(int i = 0; i <7; i ++){             for(int j = 0; j <7; j ++){                 for(int k = 0; k <7; k ++){                     iters ++;                 }             }         }         的System.out.println(iters);     } }

一个建议的答案是

EDIT

System.out.println(42); System.exit(0);

,它是正确的。 

但是,程序应该自然结束(不需要手工终止),并且不应该直接检查

的值,我们只能测试索引:iters我的想法是添加6行:i,j,k.

公开课问题{     public static void main(String [] args){         int iters = 0;         loopA://添加         for(int i = 0; i <7; i ++){             loopB://添加             for(int j = 0; j <7; j ++){                 for(int k = 0; k <7; k ++){                     iters ++;                 }                 如果(j == 2)//添加                     break loopB; //添加             }             如果(i == 1)//添加                 打破循环A; //添加         }         的System.out.println(iters);     } }

public class Question {
    public static void main(String[] args) {
        int iters = 0;
        loopA: //added
        for (int i = 0; i < 7; i++) {
            loopB: //added
            for (int j = 0; j < 7; j++) {
                for(int k = 0; k < 7; k++) {
                    iters++;
                }
                if (j == 2) //added
                    break loopB; //added
            } 
            if (i == 1)  //added
                break loopA;  //added
        }
        System.out.println(iters);
    }
}

回答(4)

  • 1楼
  • 你可以跳过一些特定的迭代,因为42:

     public class Question {
        public static void main(String [] args){
            int iters = 0;
            for(int i = 0; i <7; i ++){
                for(int j = 0; j <7; j ++){
                    如果(j <6)
                        for(int k = 0; k <7; k ++){
                            如果(k == 0)
                                iters ++;
                        }
                }
            }
            的System.out.println(iters);
        }
    }
  • 2楼
  • 只需在增加if int iters = 0之前添加一个iters

    子句;
    for(int i = 0; i <7; i ++){
        for(int j = 0; j <7; j ++){
            for(int k = 0; k <7; k ++){
                如果(i> 0 && i == j)//添加了1行
                iters ++;
            }
        }
    }
    的System.out.println(iters);
  • 3楼
  • 这个答案会做,并不需要任何超级逻辑推理

    Demo

     public static void main(String [] args)throws java.lang.Exception
    {
        int iters = 0;
        for(int i = 0; i <7; i ++){
            for(int j = 0; j <7; j ++){
                if(j == 6)break; // <----------------------
                for(int k = 0; k <7; k ++){
                    iters ++;
                }
            }
            打破; // <------------------------------------------
        }
        的System.out.println(iters);
    }
  • 4楼
  • 我能看到做的唯一方法就是尽早打破,而不是做一个循环。

    Demo

     public class Question {
        public static void main(String [] args){
            int iters = 0;
            for(int i = 0; i <7; i ++){
                for(int j = 0; j <7; j ++){
                    如果(j == 6)继续;
                    for(int k = 0; k <7; k ++){
                        iters ++;
                    }
                }
                打破;
            }
            的System.out.println(iters);
        }
    }

相关阅读:

Converting a date string to a DateTime object using Joda Time library

Java reading a file into an ArrayList?

How to clear console in Java - Eclipse SDK

How many spaces will Java String.trim() remove?

How to print all key and values from HashMap in Android?

With android studio no jvm found, JAVA_HOME has been set

String isNullOrEmpty in Java?

The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

What does -XX:MaxPermSize do?

Who sets response content-type in Spring MVC (@ResponseBody)