2010-12-03 6 views
0

Dans le code ci-dessous les questions, les réponses que je saisis sous forme jsp sont entrées dans le fichier texte. Mais en face de ce numéro doit être imprimé symbolenuméro ne pas imprimer seulement [] vient dans le fichier texte

<%@ 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 

[] arrive dans un fichier texte. Quel est le problème?

Répondre

2

Vous numérotez les numéros int de 1 à 100 à char sous la forme de valeurs d'octet. Ce n'est probablement pas ce que vous voulez, parce que c'est - en supposant que les langues occidentales - équivalent à la table ASCII depuis le début. Les 32 premiers caractères sont des éléments non imprimables tels que Linefeeds, Beeps, etc. qui, apparemment, n'apparaissent pas dans votre sortie.

Ainsi, au lieu de

bw.write((char)i); 

vous devez convertir votre int en une chaîne, e. g. comme ceci:

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

thank u il fonctionne très bien, mais la prochaine fois quand je rentre 2ème question, il affiche encore 1 !! !!! – Sumithra

+0

En effet, vous commencez à compter pour chaque requête entrante en définissant num à 1. Vous devez conserver un compteur couvrant toutes les demandes. Si ce nombre doit être conservé par session, vous pouvez le stocker et augmenter pour chaque requête. –

+0

@Sumithra - bien sûr, qu'est-ce que vous attendez d'autre - vous définissez 'num' à 1 chaque fois. Si vous voulez incrémenter des nombres, vous devez d'abord lire le dernier numéro utilisé du fichier, l'incrémenter et l'utiliser comme valeur pour 'num'. (Et enlever la boucle "while", c'est obsolète) –

2

Ici

bw.write((char)num); 

vous convertissez le nombre (par exemple 1) en char mais vous voulez le numéro imprimé sous forme de chaîne:

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

est un solution simple.

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

est légèrement meilleure que la mise en forme est permet des numéros (alignement, des zéros à gauche, ...)

Questions connexes