数字不打印[]即将出现在文本文件中

时间:2010-12-03 07:08:02

标签: java

在下面的代码中,我以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

[]符号即将出现在文本文件中。问题是什么?

2 个答案:

答案 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));

稍微好一些,因为它允许格式化数字(对齐,前导零,......)