java标准化格式输出 在控制台输出类似表格类型的左对齐格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java标准化格式输出 在控制台输出类似表格类型的左对齐格式相关的知识,希望对你有一定的参考价值。

比如
商品编号 商品名称 单位 价格
1000 阿迪王11 双 1000
1001 奈奈克 件 888
......

就是所有内容都要求和标签左对齐
我用printf %-20s这种 格式化字符串长度来写能够左对齐是不错,但是只要牵扯到中文输入,字符串的长度就不会按照规定的长度来输出,比如上面的输出信息就变成
商品编号 商品名称 单位 价格
1000 阿迪王11 双 1000
1001 奈奈克 件 888
因为printf里面第二个%-20s的信息,第一个比第二个长而输出无法占用固定字符串长度,不知道该怎么办

在jsp页面中,如何将数据导出为doc、xls格式的文件。
前台
<c:forEach items="$requestScope.newsList.result" var="list">
<tr>
<td width="5%" style="text-align:center;"><span>$list.id</span></td>
<td width="35%" style="text-align:left; text-indent:2em;">
<a href="#" title="$list.newsContent"><span>$list.newsTitle</span></a>
</td>
<td width="15%" style="text-align:center;"><span>$list.newsCol </span></td>
<td width="15%" style="text-align:center;"><span>$list.newsAuthor </span></td>
<td width="20%" style="text-align:center;"><span>$list.newsDate </span></td>
<td width="10%" style="text-align:center;">
<div style="float:left;width:50px;height:17px;background:url(../images/IcoBtn.gif)no-repeat;border: 0;background-position: -222px 0px;">
<a href="NewsAction?id=$list.id&action=editnews">
<img width="50" height="17" style="border:0;" src="../images/Empty.gif" /></a>
</div><input type="checkbox" name="chk" value="$list.id" />
</td>
</tr>
</c:forEach>
预期想实现的效果:当我点击某一个超链接的时候,跳转到一个servlet中,在里面进行相应的处理,处理完成后返回原页面。

提问:1、如何实现上面所说的效果。
2、点击超链接的时候,那个超链接应该注意些什么。因为在同一在页面中,可能存在多个<c:forEach></c:forEach>.
3、在servlet里面,调用相应的处理方法的时候应该注意什么.因为在这个项目中,我是基于MVC模式开发的(dao层与数据库层交互、domain层封装javaBean、service层与dao层、web层交互、web层主要负责接收数据、调用处理方法、跳转)
参考技术A 这个没有什么 特别好的办法。
如果想达到你的要求,只能是动态的来创造
%-8s\t\t%-8s\t\t%-8s\t\t%-8s\t\t%-8s\n
这样的模式,
因输出内容的不同,而决定是输出几个\t
参考技术B 这种要求没有任何意义,做开发的输出不可能在控制台上有要求格式的,一般是在页面上,最少也要输出到word或记事本上。不要把时间花在这些没有意义的效果上。追问

这个是作业要求 没意义也得做啊...总不能给作业啪一甩老师脸上 "这玩意没意义,我懒得对齐了,分你看着给"

追答

用空格吧

参考技术C 全选中代码 在eclipse中 选择source 栏 有shift left选中即可 参考技术D 你目前实现的代码是怎么样的追问

目前的代码:
System.err.printf("%-8s\t\t%-8s\t\t%-8s\t\t%-8s\t\t%-8s\n","商品编号","商品名称","商品单价","单位","数量");
for(product current:data1.getSaves())
System.err.printf("%-4d\t\t%-8s\t%-4s\t\t%-8s\t\t%-4d\n",current.getId(),current.getProname(),current.getUnit(),current.getUnit(),current.getThereset());

追答

试试看for循环里也用标题那种格式,将结果都以字符串形式输出看看

dump方法打印表格

在多人合作项目中偶尔会遇到这样的情况:
现在在调试程序,从其他小伙伴提供的方法中取到的table类型数据报错了,此时我们想检查一下数据格式。但是直接print又无法打印出来这个table的结构,真机测试时又不太方便在Lua中打断点,用for循环来输出又不能展开所有子table(有个dump工具该多好)。
所以,如果想解决上面的问题,将整个table类型数据的结构输出到控制台,那就使用循环+递归的方式来输出数据吧。
下面直接贴上代码以及测试用例:
感谢老司机Reyn在评论中提出的建议
--[[
print_dump是一个用于调试输出数据的函数,能够打印出nil,boolean,number,string,table类型的数据,以及table类型值的元表
参数data表示要输出的数据
参数showMetatable表示是否要输出元表
参数lastCount用于格式控制,用户请勿使用该变量
]]
function print_dump(data, showMetatable, lastCount)
if type(data) ~= "table" then
--Value
if type(data) == "string" then
io.write("\"", data, "\"")
else
io.write(tostring(data))
end
else
--Format
local count = lastCount or 0
count = count + 1
io.write("\n")
--Metatable
if showMetatable then
for i = 1,count do io.write("\t") end
local mt = getmetatable(data)
io.write("\"__metatable\" = ")
print_dump(mt, showMetatable, count) -- 如果不想看到元表的元表,可将showMetatable处填nil
io.write(",\n") --如果不想在元表后加逗号,可以删除这里的逗号
end
--Key
for key,value in pairs(data) do
for i = 1,count do io.write("\t") end
if type(key) == "string" then
io.write("\"", key, "\" = ")
elseif type(key) == "number" then
io.write("[", key, "] = ")
else
io.write(tostring(key))
end
print_dump(value, showMetatable, count) -- 如果不想看到子table的元表,可将showMetatable处填nil
io.write(",\n") --如果不想在table的每一个item后加逗号,可以删除这里的逗号
end
--Format
for i = 1,lastCount or 0 do io.write("\t") end
io.write("")
end
--Format
if not lastCount then
io.write("\n")
end
end
下面分别输出了nil,boolean,number,string,table类型的数据,测试代码如下:
print("---------------Test---------------")
local myData = nil
print_dump(myData)
print("-------------------")
myData = true
print_dump(myData)
print("-------------------")
myData = 10086
print_dump(myData)
print("-------------------")
myData = "your name"
print_dump(myData)
print("-------------------")
myData =
null = nil,
bool = true,
num = 20,
str = "abc",
subTab = "111", "222",
func = print_dump,
sunTab = "sun_a", "sun_1", "sun_2", you = "god", i = "man"

local mt =
mt.__add = function(op1, op2) return 1000 end
mt.__index = 1,2
setmetatable(myData, mt)
print_dump(myData, 1) -- 第二个参数不为空则打印元表
print("---------------End---------------")
dump输出的结果是这样的(因为内容太长,屏幕高度不够,所以分成了两张图):
上半部分输出.jpeg
下半部分输出.jpeg
如果不是有特殊需求,建议按照注释的提示,屏蔽子级table类型值的元表。屏蔽子级table类型值的元表之后输出看起来清爽很多。
屏蔽子级table的元表后的输出.jpeg
总结:
其实解决问题不难,需求是成长的直接动力。
其实为了dump输出图上的效果,我还是花了一些时间去做微调。最初末尾是没有换行的,也就是End那一行会紧接着上一行输出,虽然table的结构可以正常看到,但是如果dump的不是一个table,那就看着很奇怪了。时间总是花在细节上。
参考技术A 非常感谢您的提问。关于Python中的dump方法打印表格,我可以为您提供以下解释:
dump方法是Python中json模块中的一个方法,用于将Python对象转换为JSON格式的字符串并输出到文件中。在输出JSON格式的字符串时,可以使用indent参数来指定缩进的空格数,从而使输出的JSON字符串更加易读。
如果您想要打印表格,可以使用Python中的pandas库。pandas库提供了DataFrame对象,可以方便地处理和操作表格数据。您可以将表格数据转换为DataFrame对象,然后使用to_json方法将其转换为JSON格式的字符串,最后使用dump方法将其输出到文件中。
另外,如果您想要在Jupyter Notebook中打印表格,可以使用pandas库的display方法。该方法可以直接在Notebook中显示DataFrame对象,而不需要将其转换为JSON格式的字符串。
总之,Python中有很多方法可以打印表格,具体方法取决于您的需求和使用场景。如果您有任何其他问题或需要进一步的帮助,请随时告诉我,我会尽力为您提供帮助。
参考技术B 打印表格的方法:
1、打开Excel 电子表格 ,可以直接文件打印,最好先设置一下打印区域;
2、文件打印;
3、在这里选择已经设置好的打印机;
4、在设置里面,可以选择 打印的范围,打印活动工作表,打印整个簿,或者打印选定区域。当需要仅仅打印一个工作表,就选择打印活动工作表,当需要打印整个工作簿里的所有工作表里,具选择打印整个簿,当仅仅只需要一个工作表里某一个区域时,可以选择打印选定区域;
5、里面还有其他设置 ,纸张方向,纸张大小,自定义边距 ,无缩放,可以自行设置;
6、打印,填好打印的份数就可以。
参考技术C php打印单个数据,php打印表格
青霖 2022年12月07日 03:00 10 0
PHP里面怎么输出数据?
您好,PHP输出数据有四种方式,echo、var_dump、print_r、retrun(这个一般是PHP框架常用)

PHP如何将数据库表中的某列数据一个一个循环取出并打印
一般我们为了减少数据库链接,取数据是一次取出所有想要的数据然后做循环处理,而不是一个个循环取出

$servername = "localhost";

$username = "root";

$password = "root";

$dbname = "aaaa";

// 创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn-connect_error)

die("连接失败: " . $conn-connect_error);



$conn-query('set names utf8');

$sql = "SELECT name FROM xiao ";//这里是查询xiao表的name列的所有数据

$result = $conn-query($sql);

if ($result-num_rows 0)

// 输出数据

while($row = $result-fetch_assoc())

//print_r($row);

echo "name: " . $row["name"]."br";//这里是循环打印



else

echo "没有查询到数据";



$conn-close();

PHP如何输出数据库的每条数据
// 这是因为你从资源型结果集中获取数据时只获取了一次, 如果查询为多条数据应该迭代资源型结果集

$r = mysql_query($sql); // 你的结果集

$result = [];

while (true)

$ary = mysql_fetch_assoc($r); // 取出第一条数据, 数据指针向后移动一位

if ($ary)

$result[] = $ary; // 存储到结果数组中

else

break; // 如果取出的结果为false, 则代表数据获取完毕, 终止循环





echo 'pre';

print_r($result); // 打印最终结果

echo '/pre';

php怎么输出数据库中的一个数据
一、首先你需要在 $result=mysql_query($sql); 这一行之后取一下数据: $row = mysql_fetch_array($result); 具体原因请看我以前回答过的问题:/question/142246646 二、之后查看获取到的数据: 1 查看具体值: echo $rphp怎么输出数据库中的一个数据

2.php如何打印一个对象或数组到桌面上
php打印一个对象或数组到到桌面上:

1、打印数组使用print_r ( $array/$var )

print 是打印的意思,而r则取自Array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的变量。

print_r ($_REQUEST) ;

print_r ($_GET) ; /* 打印使用GET方法传递的表单内容*/

print_r($_POST) ; /* 打印使用表单POST方法传递过的数组内容*/

2、打印对象使用var_dump ($object/$array/$var)

var 代表变量(Variable),变量包括对象、数组以及标量变量,dump有倒出之意,加在一块,就是将变量或对象的内容全部输出出来。

var_dump($DB) ; /*打印$DB数据库连接对象的内容*/

var_dump($fileHandle) ; /*打印文件句柄对象的内容*/

var_dump($Smarty) ; /*打印Smarty模板对象*/
参考技术D 在 Python 中,如果想要使用 dump 方法打印表格,您可以使用 Pandas 库中的 DataFrame 数据结构来实现。具体的步骤如下:

1. 首先,使用 Pandas 库中的 DataFrame() 函数来创建一个数据框,其中包含您要打印的数据。例如:

```
import pandas as pd

data = 'Name': ['Tom', 'Jack', 'Steve', 'Ricky'],
'Age': [28, 34, 29, 42],
'Country': ['US', 'Canada', 'UK', 'Mexico']

df = pd.DataFrame(data)
```

在这个例子中,我们创建了一个名为 df 的数据框,并填充了三列数据:人名、年龄和国家。

2. 接着,您可以使用 dump 方法打印数据框,例如:

```
print(df.to_string(index=False))
```

这个代码会将数据框转换为字符串格式,并输出到终端中。 to_string() 方法中的 index=False 参数是为了去掉行索引,以使表格更加干净。

当然,您也可以将输出的字符串保存到文件中,例如:

```
with open('output.txt', 'w') as f:
f.write(df.to_string(index=False))
```

这样会将表格保存到名为 output.txt 的文件中。

希望这些信息能对您有所帮助!

以上是关于java标准化格式输出 在控制台输出类似表格类型的左对齐格式的主要内容,如果未能解决你的问题,请参考以下文章

C程序设计-格式控制符标准输入输出函数

java如何实现读取word文件并按指定word样式格式输出

在 JSF 中格式化日期输出

c++,怎么控制输出格式,使每一行格式相同,且对齐,就比如输出一个表格形式

java如何输出xls格式的Excel表格文件

如何将表格转储到控制台?