В настоящее время я пытаюсь сделать свой код для вывода выходного файла с помощью метода PrintStream. МОЯ учебник предполагает, что я использую эту конкретную строку кода в мой основной:Ошибка PrintStream в основном «переменном выходе уже определена в основном»
PrintStream output = new PrintStream(new File("results.txt"));
Однако, когда я печатаю эту строку кода, Java дает мне следующую ошибку:
Personality.java:17: error: variable output is already defined in method main(String[])
PrintStream output = new PrintStream(new File("results.txt"));
^
Personality.java:23: error: cannot find symbol
output.println();
^
Мой главный метод в настоящее время выглядит следующим образом:
public class Personality {
public static void main (String[] args) throws FileNotFoundException {
Scanner input = new Scanner(System.in);
intro();
Scanner output = asksForFile(input);
PrintStream output = new PrintStream(new File("results.txt"));
while(output.hasNextLine()){
int[] aCounts = new int[4];
int[] bCounts = new int[4];
String name = output.nextLine();
String data = output.nextLine();
output.println();
System.out.print(name + ": ");
int[] percentB = numberOfAnswers(name, data, aCounts, bCounts);
output.print(Arrays.toString(percentB));
output.print(" = ");
output.println(determineType(percentB));
}
}
Я предполагаю, что из ошибок, что я не могу иметь выход, определенный дважды в одном методе, но если я не определить мой выход, как будет моя программа знает, что что сим бол есть? Кроме того, если у меня уже есть выход, определяющий внутри main, что еще я могу назвать его, чтобы заставить PrintStream работать, а также сохранить остальную часть программы?
я переименовал переменные «выход» в моей основной для сканера, но вместо этого я получаю эту новую ошибку:
Personality.java:34: error: cannot find symbol
output.println("This program processes a file of answers to the");
^
symbol: variable output
location: class Personality
Это то, что весь мой код выглядит на данный момент:
import java.util.*;
import java.io.*;
public class Personality {
public static void main (String[] args) throws FileNotFoundException {
Scanner input = new Scanner(System.in);
intro();
Scanner scanner = asksForFile(input);
PrintStream output = new PrintStream(new File("results.txt"));
while(scanner.hasNextLine()){
int[] aCounts = new int[4];
int[] bCounts = new int[4];
String name = scanner.nextLine();
String data = scanner.nextLine();
output.println();
System.out.print(name + ": ");
int[] percentB = numberOfAnswers(name, data, aCounts, bCounts);
output.print(Arrays.toString(percentB));
output.print(" = ");
output.println(determineType(percentB));
}
}
//Introduces the program
public static void intro() {
output.println("This program processes a file of answers to the");
output.println("Keirsey Temperament Sorter. It converts the");
output.println("various A and B answers for each person into");
output.println("a sequence of B-percentages and then into a");
output.println("four-letter personality type.");
output.println();
}
//Asks for input file
public static Scanner asksForFile(Scanner input) throws FileNotFoundException {
output.print("input file name? ");
String filename = input.nextLine();
return new Scanner(new File(filename));
}
//This while loop puts counts inside arrays
public static int[] numberOfAnswers(String name, String data, int[] aCounts, int[] bCounts) throws FileNotFoundException {
data = data.toLowerCase();
for (int i = 0; i < data.length(); i++) {
int x = ((i % 7) + 1)/2;
if (data.charAt(i) == 'a'){
aCounts[x]++;
} else if(data.charAt(i) == 'b'){
bCounts[x]++;
}
}
return percentB(aCounts, bCounts);
}
public static void printOutcome(int[] aCounts, int[] bCounts){
String[] ratios = new String[4];
for(int i = 0; i < 4; i++){
String temp = aCounts[i] + "A-" + bCounts[i] + "B";
ratios[i] = temp;
}
output.println(Arrays.toString(ratios));
}
public static int[] percentB(int[] aCounts, int[] bCounts){
int[] percentB = new int[4];
for(int i = 0; i < 4; i++){
double percent = (double) bCounts[i]/(aCounts[i] + bCounts[i]);
percentB[i] = (int) Math.round(percent * 100);
}
return percentB;
}
public static String determineType(int[] percentB){
String sub50 = "ESTJ";
String sup50 = "INFP";
String type = "";
for(int i = 0; i < 4; i++){
if(percentB[i] > 50){
type += sup50.charAt(i);
} else if(percentB[i] < 50){
type += sub50.charAt(i);
} else {
type += "X";
}
}
return type;
}
}
Уход: Java не относится к JavaScript. – user2864740
Извините! Я все еще получаю ошибки в своем коде! Вы знаете, почему? – user3015607
Обратите внимание на сообщения об ошибках - они верны. В настоящее время форма не работает, потому что 'PrintStream output 'является локальной переменной * в методе' main' и, следовательно, [символ, предназначенный для ссылки на переменную] * не может быть найден * в методе 'intro' , – user2864740