Java 文本文件中的数字不是仅打印[]

Java 文本文件中的数字不是仅打印[],java,Java,在下面的代码中,我以jsp形式输入的问题和答案都输入到文本文件中。但它前面的数字必须打印出来 <%@ page language="java" import="java.io.*" errorPage="" %> <% /* String num=request.getParameter("qnum"); session.setAttribute("quesnum",num);*/ String q=request.getParameter

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

文本文件

您正在将
int
数字从1到100转换为
char
作为字节值。这可能不是您想要的,因为假设使用西方语言,这从一开始就相当于ASCII表。前32个左右的字符是不可打印的内容,如换行符、蜂鸣音等,显然不会进入输出

所以不是

bw.write((char)i);
您需要将int转换为字符串,例如。G像这样:

bw.write(String.valueOf(i));

您正在将
int
数字从1到100转换为
char
作为字节值。这可能不是您想要的,因为假设使用西方语言,这从一开始就相当于ASCII表。前32个左右的字符是不可打印的内容,如换行符、蜂鸣音等,显然不会进入输出

所以不是

bw.write((char)i);
您需要将int转换为字符串,例如。G像这样:

bw.write(String.valueOf(i));
这里

您正在将数字(例如1)转换为字符,但希望将数字打印为字符串:

bw.write(String.valueOf(num));
这是一个简单的解决方案

bw.write(String.format("%d", i));
稍微好一点,因为它允许对数字进行格式化(对齐、前导零等)

您正在将数字(例如1)转换为字符,但希望将数字打印为字符串:

bw.write(String.valueOf(num));
这是一个简单的解决方案

bw.write(String.format("%d", i));

稍微好一点,因为它允许设置数字格式(对齐、前导零等)

谢谢,它工作正常,但下次我输入第二个问题时,它仍然显示1!!!!!这是因为您通过将num设置为1开始计算每个传入请求。您需要保留一个跨越请求的计数器。如果每个会话都要保留这个数字,您可以将它存储在那里,并为每个请求增加它。@Sumithra-当然,您还希望得到什么-您每次都将
num
设置为1。如果要递增数字,则必须首先从文件中读取上次使用的数字,递增并将其用作
num
的值。(并删除“while”循环,它已经过时)非常感谢。我理解它背后的逻辑。谢谢你,它工作得很好,但下次当我输入第二个问题时,它仍然显示1!!!!!这是因为您通过将num设置为1开始计算每个传入请求。您需要保留一个跨越请求的计数器。如果每个会话都要保留这个数字,您可以将它存储在那里,并为每个请求增加它。@Sumithra-当然,您还希望得到什么-您每次都将
num
设置为1。如果要递增数字,则必须首先从文件中读取上次使用的数字,递增并将其用作
num
的值。(并删除“while”循环,它已经过时)非常感谢。我明白背后的逻辑。