Java的控制台的输出问题

  • 前言
  • 问题:
  • 目标结果:
  • 我的改动:
  • 正解:
  • 问题总结:


前言

今天被朋友问到了一个关于二维数组字符串输出转行的问题

事情是这样的

问题:

目标得到的结果本应为五行五列,但是结果却是一整列排下来

Java控制台sqlserver JAVA控制台打印换行_System

目标结果:

Java控制台sqlserver JAVA控制台打印换行_java_02

我的改动:

for( int i = 0; i < 5; i++){
	for( int j = 0; j < 5; j++){
		data[i][j] = rand.nextInt();
			if(j != 4){
				System.out.print(data[i][j] + "\t" );
			}else{
				System.out.println(data[i][j] + "\t" );
				 }
}
}

因为我们知道,输出方式中——print是不会自动换行的,而println会自动换行,因此为了达到五个字符串跳到下一行到的效果,我是用了if判断来控制输出格式。

知识复习:

System.out.println(); 是最常用的输出语句,它会把括号里的内容转换成字符串输出到输出窗口(控制台),并且换行,当输出的是一个基本数据类型时,会自动转换成字符串,如果输出的是一个对象,会自动调用对象的toString();方法(1),将返回值输出到控制台

System.out.print(); 与第一个很相似,区别就是上一个输出后会换行,而这个命令输出后并不换行。

System.out.printf(); 这个方法延续了C语言的输出方式,通过格式化文本和参数列表输出(我理解为自带format()方法)

——但是他之后给了我另一个更好的解决方法

正解:

Java控制台sqlserver JAVA控制台打印换行_语言环境_03

String.format():字符串常规类型格式化
我们看到,在内围循环的最后,也就是上一次外围循环的开始前加了一个System.out.println() 语句就可以完成上述效果

知识复习:

format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。

format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。

问题总结:

for循环内环结束时,外环还没有结束本次循环,所以没必要做结尾判断if(j == 5),直接在外环结束时加println就好了

在解决这个小问题的过程中,我也同时意识到了

  • 小问题也要重视
  • 解决问题中产生的知识点也有温习的必要性