关于java输出的一道题

今天在我的后宫群看到了一道有意思的java题,分享一下

题目是这样的
看到第一眼,反应:重载输出println也能重载
据说正常反应应该是 在method中输出然后直接退出,果然是自己智商不够
既然不确定,那就Stack Overflow一下,找了找果然发现了,System.setOut()

关于这个函数,详细内容可以看官方文档,在这大致概括一下

setOut(PrintStream out)
将输出流的规则设置为out内的输出规则

PrintStream中,则有着println方法,因此,我们只需要override一下
println(String x)就可以达到要求了。

记得a=10输出是无换行的,应该使用super.print方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

static void (int a, int b) {

System.setOut(new PrintStream(System.out) {

public void println(String x) {

if (x != null) {

if (x.equals("a=10")) {

x = "a=100,";

super.print(x);

} else {

if (x.equals("b=10")) {

x = "b=200";

}

super.println(x);

}

} else {

super.println(x);

}

}

});

}

输出
a=100,b=200

原文:大专栏  关于java输出的一道题

原文地址:https://www.cnblogs.com/sanxiandoupi/p/11633165.html

时间: 2024-10-07 12:25:19

关于java输出的一道题的相关文章

JAVA学习笔记一(JAVA输出环境变量)

package mytest; import java.util.*;; public class mymain { public static void main(String[] args) { // TODO Auto-generated method stub System.out.print(new Date()); Properties p=System.getProperties(); p.list(System.out); Runtime rt=Runtime.getRuntim

PHP、Java输出json格式数据

  PHP 输出json. $result = mysql_query($sql); //查询结果 $users=array(); $i=0; while($row=mysql_fetch_array($result,MYSQL_ASSOC)){ $users[$i]=$row; $i++; } echo json_encode(array("result"=>"success",'data'=>$users));   防止输出json数据乱码,把数据转

java输出矩阵

输出如下矩阵: 0000 0111 0122 0123 public static void main(String[] args){ for(int i=0;i<4;i++){ for(int j=0;j<4;j++){ System.out.print(i>=j?j:i); } System.out.println(); } } java输出矩阵

Java输出字符串格式问题

今天遇到一个问题,使用JSoup挖掘出的数据一直出错 Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'F' 问题代码如下: //出错代码 System.out.printf(element.attr("href")); //出错字符串 String temp = "%E6%B3%95%E5%9B%BD%E8%AD%A6%E5%AF%9F

Java输出正反金字塔循环

1,问题分析 我们都知道,打印输出的时候,都是从最左端输出,而这里,第一个星号是在中间.这实际是因为星号之前有很多空格.当我们使用问号来表示空格,实际的输出效果应该是图1.2的形式. 1.1     1.2 从图中分析,我们可以看到本次打印出的金字塔有5行,每一行都会打印出几个空格,然后再打印出几个★号,这样我们就知道该如何确认程序的框架了. public static void Triangle(){ for(int i = 1;i <= 5;i++){ //循环5次,打印5行 //打印空格数

java输出斐波那契数列

题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列:1.1.2.3.5.8.13.21.34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*) //Java编程:三种

java输出换行的标准姿势&quot;line.separator&quot;

java中写.txt文件,实现换行的几种方法: 1.使用java中的转义符"\r\n": windows下的文本文件换行符:\r\n linux/unix下的文本文件换行符:\r Mac下的文本文件换行符:\n 1.String str="aaa"; 2.str+="\r\n"; 2.BufferedWriter的newline()方法: FileOutputStream fos=new FileOutputStream("c;\\11

StringWriter/PrintWriter在Java输出异常信息中的作用

闲来无事,看看JUnit的源代码.刚刚开始看就发现一段有趣的代码: public String trace() { StringWriter stringWriter = new StringWriter(); PrintWriter writer = new PrintWriter(stringWriter); thrownException().printStackTrace(writer); StringBuffer buffer = stringWriter.getBuffer(); r

java输出日期时间

按照格式化输出时间 package pack; import java.text.SimpleDateFormat; import java.util.Date; public class Demo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Date date = new Date(); System.out.println(date); /