我正在尝试创建一个程序,要求输入和输出文件名,但是我在制作程序时遇到了麻烦,特别是在询问输出文件的文件名时。这两种方法都会要求用户输入相应的文件名并将该名称作为String返回。这些方法将从main方法调用。它们将返回一个String,因此在调用方法之前应该声明两个String变量。
这是读取输入文件并创建输出文件的零件程序,但是我在添加要求文件名的程序部分时遇到问题。我正在尝试处理要求用户输入方法的方法,但是当我运行程序时,在我需要它的交互页面中没有打印出任何内容。我已经在我的书中寻求帮助了,但是我没有找到它,任何帮助都会非常感激。
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class WebberProject3Test1 {
private static Map<String, Integer> ticketTypeToPrice = new HashMap<String, Integer>();
private static final String SPACE = " ";
private static final String CURRENCY_SYMBOL = " $";
public static void getInputFileName() {
// Create Scanner object for keyboard input.
Scanner keyboard = new Scanner(System.in);
//Get the file name
System.out.println("Enter filename here : ");
String filename = keyboard.nextLine();
//Open the file.
File file = new File(filename);
String sWhatever;
Scanner scanIn = new Scanner(System.in);
sWhatever = scanIn.nextLine();
System.out.println(filename);
scanIn.close();
System.out.println(sWhatever);
}
public static void main(String[] args) {
Scanner scanner = null;
PrintWriter outputFile = null;
DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMinimumFractionDigits(2);
getInputFileName();
try {
File file = new File("portlandvip2.txt");
scanner = new Scanner(file);
outputFile = new PrintWriter("portland2out.txt");
while (scanner.hasNext()) {
String line = scanner.nextLine();
String[] entriesOnLine = line.split(" ");
// Line with price and ticket type
if (entriesOnLine.length == 2) {
ticketTypeToPrice.put(entriesOnLine[0], Integer.parseInt(entriesOnLine[1]));
StringBuilder sb = new StringBuilder();
sb.append(entriesOnLine[0])
.append(CURRENCY_SYMBOL)
.append(decimalFormat.format(Integer.parseInt(entriesOnLine[1])));
outputFile.println(sb.toString());
} else if (entriesOnLine.length == 4) {
//Line with First Name, Last Name, number of Tickets and Price
int numberOfTickest = Integer.parseInt(entriesOnLine[2]);
int ticketPrice = ticketTypeToPrice.get(entriesOnLine[3]);
int totalPrice = numberOfTickest * ticketPrice;
StringBuilder sb = new StringBuilder();
sb.append(entriesOnLine[0])
.append(SPACE)
.append(entriesOnLine[1])
.append(CURRENCY_SYMBOL)
.append(decimalFormat.format(totalPrice));
outputFile.println(sb.toString());
}
}
} catch (IOException e) {
System.out.println("exception:" + e);
} finally {
scanner.close();
outputFile.close();
}
}
}
为了让这个程序工作,我需要使用标题名称制作两种不同的方法:
public static String getInputFileName()
public static String getOutputFileName()
如何让getInputFileName方法起作用?
答案 0 :(得分:1)
你需要做的2件事
1:您必须在主方法的某处调用getInputFileName()
示例:
public static void main(String[] args) {
...
getInputFileName();
2:你必须实际打印文件名:
示例:
System.out.println("Enter filename here : ");
String filename = keyboard.nextLine();
...
System.out.println(filename);