在下面的代码中,我以jsp形式输入的问题,答案都输入到文本文件中。但必须打印前面的数字
<%@ page language="java" import="java.io.*" errorPage="" %>
<%
/* String num=request.getParameter("qnum");
session.setAttribute("quesnum",num);*/
String q=request.getParameter("qn");
session.setAttribute("question",q);
String opt1=request.getParameter("A");
session.setAttribute("a",opt1);
String opt2=request.getParameter("B");
session.setAttribute("b",opt2);
String opt3=request.getParameter("C");
session.setAttribute("c",opt3);
String opt4=request.getParameter("D");
session.setAttribute("d",opt4);
String ans=request.getParameter("ANS");
session.setAttribute("answer",ans);
%>
<html>
<head>
<title>Text File</title>
</head>
<body>
<%
File f=new File("D:\\Program Files\\Tomcat 6.0\\webapps\\ROOT\\tst.txt");
f.createNewFile();
try
{
BufferedWriter bw=new BufferedWriter(new FileWriter(f,true));
int num=1;
bw.newLine();
while(num<100)
{
bw.write((char)num);
bw.write("|");
bw.write(q);
bw.write("|");
bw.write(opt1);
bw.write("|");
bw.write(opt2);
bw.write("|");
bw.write(opt3);
bw.write("|");
bw.write(opt4);
bw.write("|");
bw.write(ans);
bw.flush();
bw.close();
}
num++;
}
catch(Exception e)
{
}
%>
</body>
</html>
Output must be
1|quest1|option a |option b|option c|option d| and:a
2|quest2|option a |option b|option c|option d| and:b
3|quest3|option a |option b|option c|option d| and:d
but instead of 1 2 3 i get
[]|quest1|option a |option b|option c|option d| and:a
[]符号即将出现在文本文件中。问题是什么?
答案 0 :(得分:2)
您正在将int
数字从1到100转换为char
作为字节值。这可能不是你想要的,因为这是 - 假设西方语言 - 从一开始就相当于ASCII表。前32个左右的字符是不可打印的字符,如换行符,哔哔声等,显然不会影响你的输出。
所以而不是
bw.write((char)i);
你需要将你的int转换为String,e。 G。像这样:
bw.write(String.valueOf(i));
答案 1 :(得分:2)
下面
bw.write((char)num);
您将数字(例如1)转换为字符,但您希望将数字打印为字符串:
bw.write(String.valueOf(num));
是一个简单的解决方案。
bw.write(String.format("%d", i));
稍微好一些,因为它允许格式化数字(对齐,前导零,......)