我正在为类创建一个简单的Java程序,该程序应该将变量petName,petType和numVisits输出到名为“PatientData.txt”的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
答案 0 :(得分:0)
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);
}