2009-09-09 5 views
0

s'il vous plaît corriger le programme.Ne pas écrire la valeur int. S'il vous plaît corriger le programme

Q. Ecrire un prg java pour accepter RollNo, le nom d'un étudiant et le stocker dans dossiers Student.txt.Accept n et le stocker.

Après sont les inconvénients de o/p produit 1. Lorsque nous écrivons {int rno-à-dire pas de rouler stud} dans le fichier "Student.txt" il ne pas écrire la valeur int

i/p

C:\j2sdk1.4.1_01\bin>java StudentInfo 
Enter how many students 
3 
Student 1 
Enter Roll no.: 
1 
Enter Name : 
Geeta 
Student 2 
Enter Roll no.: 
2 
Enter Name : 
Pinky 
Student 3 
Enter Roll no.: 
3 
Enter Name : 
Shaily 

o/p écrit dans le fichier "student.txt" est GeetaPinkyShaily

2) Lorsque nous imprimons les valeurs student.txt alors étudiant rouleau est correctement affiché boucle pas utilisé est

while((b=fin.read())!=-1) 
{ 
System.out.print(b); 
} 

Mais comme char c=(char) b; ne se fait pas il n'imprime pas le nom

C:\j2sdk1.4.1_01\bin>java StudentInfo 
Enter how many students 
3 
Student 1 
Enter Roll no.: 
1 
Enter Name : 
Geeta 
Geeta 
Student 2 
Enter Roll no.: 
2 
Enter Name : 
Pinky 
Pinky 
Student 3 
Enter Roll no.: 
3 
Enter Name : 
Shaily 
Shaily 
Contents of "Student.txt" are : 
1711011011169728010511010712138310497105108121 
C:\j2sdk1.4.1_01\bin> 


           or 

vice versa

while((b=fin.read())!=-1) 
{ 
char ch=(char) b; 
System.out.print(ch); 
} 

imprime les les nom correctement mais pas rouler non

Voici le code. Veuillez faire les changements nécessaires. Je suppose que si nous pouvons distinguer entre le rouleau no et le nom, nous pouvons résoudre ce problème. Dans le fichier o/p Je veux o/p comme rno Nom de rno Nom de rno dire 1 Geeta 2 Pinky 3 Shaily

Alors, comment l'insérer?

si je déclare que

char ch=' '; 
fout.write(ch); 

il écrit 32

Et même si

char ch=' '; 
fout.write((int)ch); 

il wites 32 à Student.txt

Répondre

2

N'utilisez pas un OutputStream directement pour écrire des données de texte. Utilisez un Writer d'une certaine forme, de sorte que vous pouvez écrire des chaînes à la place.

L'approche la plus simple serait d'ouvrir un PrintWriter, mais cela masque les erreurs. Le prochain niveau est d'utiliser un FileWriter, mais cela utilisera toujours l'encodage par défaut du système. Cela peut être suffisant pour vos objectifs.

Convertir des nombres en texte est normalement un processus dépendant de la culture, mais encore une fois je vais ignorer cela pour le moment par souci de simplicité. Ainsi, en utilisant FileWriter Enveloppé dans une BufferedWriter (pour le rendre plus facile d'écrire une nouvelle ligne):

BufferedWriter writer = new BufferedWriter(new FileWriter("Student.txt")); 
try 
{ 
    for(int i=0;i<n;i++) 
    { 
     s[i]=new StudentInfo(); 
     System.out.println("Student "+(i+1)); 
     s[i].getDetails(); 
     writer.write(s[i].rno + ": " + s[i].name); 
     writer.newline(); 
    } 
} 
finally 
{ 
    writer.close(); // Close output even if there's an error 
} 

Il y a d'autres aspects du code qui ne sont pas idéales, mais cela devrait au moins aider avec le fichier format ...

1

Vous pouvez utiliser DataOutputStream ici. FileOutputStream peut écrire tout en octets cette référence sous-jacent seulement Sun API Reference

En cela, vous pouvez utiliser writeInt pour RollNumber et writeChars Nom. Il sera également préférable si vous écrivez chaque enregistrement dans une ligne distincte dans le fichier juste pour une meilleure compréhension :)

1

Si vous demandez à la communauté de corriger vos programmes, vous n'aurez que des downvotes. Au lieu de cela, mettez en évidence votre question spécifique. Dans ce cas, il est pourquoi ne

char ch=' '; 
fout.write(ch); 

sorties 32. Pensez à it..why-t System.out.print la bonne chose, mais pas fout.write? Quelle est la différence entre fout et System.out, le cas échéant? Quelle est la différence entre write et print, le cas échéant? Recherchez la documentation. Bonne chance avec vos devoirs, au moins vous n'avez pas prétendu que ce n'est pas le cas.

Questions connexes