V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Famio
V2EX  ›  程序员

看到的一个题,随手分享一下

  •  
  •   Famio · 2017-02-10 17:41:10 +08:00 · 3359 次点击
    这是一个创建于 2851 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2017-02-10 20:53:54 +08:00
    #1 是正解。但是只是方法其一。还有一种可以使 println 也顺理成章而不在 method 中直接结束程序的办法。看看各位还有没有其它路能走。
    21 条回复    2017-02-11 23:16:41 +08:00
    ArthurKing
        1
    ArthurKing  
       2017-02-10 17:50:56 +08:00   ❤️ 9
    static void method(int a,int b){
    System.out.println("a=100,b=200");
    //throw new NullPointerException();
    System.exit(0);
    }
    finalspeed
        2
    finalspeed  
       2017-02-10 17:54:05 +08:00
    楼上的 66666....
    kaka8wp
        3
    kaka8wp  
       2017-02-10 18:05:27 +08:00
    楼上的 66666....
    fighter2011
        4
    fighter2011  
       2017-02-10 18:14:41 +08:00
    等待其他解答
    ininit
        5
    ininit  
       2017-02-10 18:19:40 +08:00 via Android
    楼上的 666
    qiayue
        6
    qiayue  
       2017-02-10 18:21:52 +08:00
    @ArthurKing exit 哈哈哈
    bianhua
        7
    bianhua  
       2017-02-10 18:23:00 +08:00   ❤️ 1
    跟你们说吧,只有 1 楼的答案是对的,因为后面那两个它么是的 println (笑哭
    ArthurKing
        8
    ArthurKing  
       2017-02-10 18:29:25 +08:00
    @bianhua 不不不,还可以换成 while(true); ( ˙-˙ )
    logbang
        9
    logbang  
       2017-02-10 18:32:38 +08:00 via Android
    楼上的 66666....
    Famio
        10
    Famio  
    OP
       2017-02-10 20:48:33 +08:00
    @bianhua 哈哈哈,大兄弟是的。
    jasontse
        11
    jasontse  
       2017-02-10 20:55:46 +08:00 via iPad
    套路。。。
    haozibi
        12
    haozibi  
       2017-02-10 21:00:20 +08:00
    1 楼真是简单粗暴
    vh2h
        13
    vh2h  
       2017-02-10 21:08:33 +08:00
    自古一楼出奇迹,看来没错啊!膜拜一楼。
    aitaii
        14
    aitaii  
       2017-02-10 22:11:43 +08:00 via Android
    正常的话是 a
    b
    aristotll
        15
    aristotll  
       2017-02-10 23:31:57 +08:00
    第二种方法是啥 第一种我也想到了...
    valkyrja
        17
    valkyrja  
       2017-02-10 23:52:19 +08:00 via Android
    似乎可以覆盖 system.out.println 然后 replace?
    padeoe
        18
    padeoe  
       2017-02-11 00:06:19 +08:00   ❤️ 1
    长知识,帮补代码:
    public static void method(int a, int b) {
    System.setOut(new PrintStream(System.out) {
    @Override
    public void println(String s) {
    super.println(s.equals("a=10") ? "a=100" : "b=200");
    }
    });
    }
    lxy42
        19
    lxy42  
       2017-02-11 00:06:45 +08:00 via Android
    在 method 中打印结果后,将 stdout 重定向到 stderr
    zhilincom
        20
    zhilincom  
       2017-02-11 04:56:42 +08:00
    @padeoe 应该是 super.print(s.equals("a=10") ? "a=100," : "b=200");
    flyingghost
        21
    flyingghost  
       2017-02-11 23:16:41 +08:00
    ```
    public static void method(int a, int b){
    final PrintStream oldOut = System.out;
    PrintStream ps=new PrintStream(new FilterOutputStream(oldOut) {
    boolean meetOne = false;
    @Override
    public void write(int b) throws IOException {
    if( b =='0'){
    oldOut.write('0');
    oldOut.write(b);
    }
    else if(b == '1'){
    if(!meetOne){
    meetOne = true;
    oldOut.write(b);
    }
    else {
    oldOut.write('2');
    }
    }
    else {
    oldOut.write(b);
    }
    }
    });
    System.setOut(ps);
    }
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:06 · PVG 03:06 · LAX 11:06 · JFK 14:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.