Java outputStream не печатается правильно - PullRequest
1 голос
/ 29 февраля 2012

Я делаю простую Java-программу для класса, которая должна выводить переменные petName, petType и numVisits в текстовый файл с именем «PatientData.txt». Я правильно печатаю petType и numVisits, но не petName. Я почти уверен, что это как-то связано с моим первым заявлением о нежелательной почте, так как petType - единственная строка, которая должна содержать 2+ слова. Вот мой код:

import java.util.Scanner;
import java.io.*;
public class AcmeClinic
{
 public static void main(String[] args )
 {
  Scanner keyboard = new Scanner(System.in);
  PrintWriter outputStream = null;

  try
  {
   outputStream = new PrintWriter(new FileOutputStream("PatientData.txt"));
  }

  catch(FileNotFoundException e)
  {
   System.out.println("Unable to create the output file.");
   System.exit(0);
  }

  System.out.println("Enter the number of pets to store information for:");
  int amount = keyboard.nextInt();
  String [] petNames = new String [amount];
  String [] petTypes = new String [amount];
  int [] numVisits = new int [amount];
  int index;
  String junk;
  outputStream.println("Patient Data:");
  outputStream.println("Pet Name Pet Type Number of Visits");
  if (amount >= 1)
  {
   for (index = 0; index < amount; index++)
   {
    System.out.println("Type the pet name, then press Enter:");
    petNames[index] = keyboard.nextLine();
    junk = keyboard.nextLine();
    System.out.println("Type the animal type (dog, cat, bird, rodent), then press Enter:");
    petTypes[index] = keyboard.nextLine();
    System.out.println("Type the number of visits last year, then press Enter:");
    numVisits[index] = keyboard.nextInt();
    outputStream.printf("%8s %-8s %-8d%n",petNames[index],  petTypes[index],numVisits[index]);
   }
  }

  outputStream.close();
 }
}

Пример ввода:

Enter the number of pets to store information for:
4
Type the pet name, then press Enter:
Champ
Type the animal type (dog, cat, bird, rodent), then press Enter: 
dog
Type the number of visits last year, then press Enter:
8
Type the pet name, then press Enter:
Bob
Type the animal type (dog, cat, bird, rodent), then press Enter:
cat
Type the number of visits last year, then press Enter:
3
Type the pet name, then press Enter:
Mickey
Type the animal type (dog, cat, bird, rodent), then press Enter:
rodent
Type the number of visits last year, then press Enter:
1
Type the pet name, then press Enter:
Polly
Type the animal type (dog, cat, bird, rodent), then press Enter:
bird
Type the number of visits last year, then press Enter:
6

Пример вывода: (PatientData.txt)

Patient Data:
Pet Name Pet Type Number of Visits
         dog      8       
         cat      3       
         rodent   1       
         bird     6       

1 Ответ

0 голосов
/ 29 февраля 2012

nextInt() вызывал немедленный nextLine(), поэтому избегайте его использования.Это будет работать и для 2 или более слов ...

System.out.println("Enter the number of pets to store information for:");
int amount = Integer.parseInt(keyboard.nextLine());
String [] petNames = new String [amount];
String [] petTypes = new String [amount];
int [] numVisits = new int [amount];
outputStream.println("Patient Data:");
outputStream.println("Pet Name Pet Type Number of Visits");

for (int index=0;index < amount; index++) {
    System.out.println("Type the pet name, then press Enter:");
    petNames[index] = keyboard.nextLine();
    System.out.println("Type the animal type (dog, cat, bird, rodent), then press Enter:");
    petTypes[index] = keyboard.nextLine();
    System.out.println("Type the number of visits last year, then press Enter:");
    numVisits[index] = Integer.parseInt(keyboard.nextLine());
    outputStream.printf("%8s %-8s %-8d%n", petNames[index], petTypes[index], numVisits[index]);
}

Как упоминалось ранее, вам не нужно использовать массивы здесь.Вы можете сделать это вместо этого ...

System.out.println("Enter the number of pets to store information for:");
int amount = Integer.parseInt(keyboard.nextLine());
outputStream.println("Patient Data:");
outputStream.println("Pet Name Pet Type Number of Visits");

String petName = new String();
String petType = new String();
int numVisit = 0;

for (int index = 0; index < amount; index++) {
    System.out.println("Type the pet name, then press Enter:");
    petName = keyboard.nextLine();
    System.out.println("Type the animal type (dog, cat, bird, rodent), then press Enter:");
    petType = keyboard.nextLine();
    System.out.println("Type the number of visits last year, then press Enter:");
    numVisit = Integer.parseInt(keyboard.nextLine());
    outputStream.printf("%8s %-8s %-8d%n", petName, petType, numVisit);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...