Java的控制台的输出问题
- 前言
- 问题:
- 目标结果:
- 我的改动:
- 正解:
- 问题总结:
前言
今天被朋友问到了一个关于二维数组字符串输出转行的问题
事情是这样的
问题:
目标得到的结果本应为五行五列,但是结果却是一整列排下来
目标结果:
我的改动:
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()方法)
——但是他之后给了我另一个更好的解决方法
正解:
String.format():字符串常规类型格式化
我们看到,在内围循环的最后,也就是上一次外围循环的开始前加了一个System.out.println() 语句就可以完成上述效果
知识复习:
format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
问题总结:
for循环内环结束时,外环还没有结束本次循环,所以没必要做结尾判断if(j == 5),直接在外环结束时加println就好了
在解决这个小问题的过程中,我也同时意识到了
- 小问题也要重视
- 解决问题中产生的知识点也有温习的必要性