【发布时间】:2014-05-05 21:14:57
【问题描述】:
我正在尝试制作一个要求程序输入和输出文件名的程序,但是我在制作程序时遇到了麻烦,尤其是在询问输出文件的文件名时。 这两种方法都将要求用户输入适当的文件名并将该名称作为字符串返回。这些方法将从主方法中调用。它们将返回一个字符串,因此在调用方法之前应该声明两个字符串变量。
这是读取输入文件并创建输出文件的部分程序,但我无法添加将询问文件名的程序部分。
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 WebberProject3 {
private static Map<String, Integer> ticketTypeToPrice = new HashMap<String, Integer>();
private static final String SPACE = " ";
private static final String CURRENCY_SYMBOL = " $";
public static void main(String[] args) {
Scanner scanner = null;
PrintWriter outputFile = null;
DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMinimumFractionDigits(2);
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();
}
}
}
为了让这个程序正常工作,我需要使用标题名称制作 2 种不同的方法:
public static String getInputFileName()
public static String getOutputFileName()
请帮忙,我是编程的初学者,我尝试了一些不同的东西,但没有任何效果。任何帮助将不胜感激
这将是我尝试过的一个例子(我在阅读了这篇文章的评论后尝试了这个):
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 static void String getInputFileName()
{
System.out.println("Enter filename here : ");
String sWhatever;
Scanner scanIn = new Scanner(System.in);
sWhatever = scanIn.nextLine();
scanIn.close();
System.out.println(sWhatever);
}
}
public class WebberProject3Test1
{
public static void main(String[] args) {
{
private static Map<String, Integer> ticketTypeToPrice = new HashMap<String, Integer>();
private static final String SPACE = " ";
private static final String CURRENCY_SYMBOL = " $";
public static void main(String[] args) {
Scanner scanner = null;
PrintWriter outputFile = null;
DecimalFormat decimalFormat = new DecimalFormat();
decimalFormat.setMinimumFractionDigits(2);
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();
}
}
}
}
我得到这样的错误:
发现 9 个错误:
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 10]
Error: Syntax error on tokens, ClassHeader expected instead
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 12]
Error: Syntax error on token(s), misplaced construct(s)
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 12]
Error: Syntax error on token ""Enter filename here : "", delete this token
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 16]
Error: Syntax error on token ";", { expected after this token
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 26]
Error: Duplicate method main(java.lang.String[]) in type WebberProject3Test1
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 27]
Error: Syntax error, insert "}" to complete BlockStatements
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 27]
Error: Syntax error, insert "}" to complete MethodBody
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 32]
Error: Duplicate method main(java.lang.String[]) in type WebberProject3Test1
File: C:\Users\Eddie\CISS100\WebberProject3Test1.java [line: 74]
Error: Syntax error on token "}", delete this token
【问题讨论】:
-
您可以使用时髦的新
Console类。好吧,不是那么新 - 从 1.6 开始 -
你应该把你的错误列表写成不同的帖子,并将某人的代码标记为答案。你代码中的错误是编译错误,如果你给我一个链接,我可以在另一篇文章中解释。
-
我更新了我的答案以反映您的更新
标签: java