Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向用户询问输出和输入文件名?_Java - Fatal编程技术网

Java 如何向用户询问输出和输入文件名?

Java 如何向用户询问输出和输入文件名?,java,Java,我试图制作一个程序,要求输入和输出文件名,但我在制作程序时遇到了困难,特别是在要求输出文件的文件名时。这两种方法都将要求用户输入适当的文件名并以字符串形式返回该名称。这些方法将从主方法调用。它们将返回一个字符串,因此在调用方法之前应该声明两个字符串变量 这是一个读取输入文件并创建输出文件的部分程序,但是我在添加程序中请求文件名的部分时遇到了问题。我正在尝试使用一种方法,向用户请求输入法,但当我运行程序时,交互页面中没有打印出我需要的内容。我已经在我的书中寻找帮助,但是我没有得到任何帮助,任何帮助

我试图制作一个程序,要求输入和输出文件名,但我在制作程序时遇到了困难,特别是在要求输出文件的文件名时。这两种方法都将要求用户输入适当的文件名并以字符串形式返回该名称。这些方法将从主方法调用。它们将返回一个字符串,因此在调用方法之前应该声明两个字符串变量

这是一个读取输入文件并创建输出文件的部分程序,但是我在添加程序中请求文件名的部分时遇到了问题。我正在尝试使用一种方法,向用户请求输入法,但当我运行程序时,交互页面中没有打印出我需要的内容。我已经在我的书中寻找帮助,但是我没有得到任何帮助,任何帮助都会非常感激

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();
    }
}
}

如何让getInputFileName方法工作

2件你需要做的事情

1:您必须在主方法中的某个地方调用
getInputFileName()

例如:

public static void main(String[] args) {

    ...

    getInputFileName();
System.out.println("Enter filename here : ");
String filename = keyboard.nextLine();

...

System.out.println(filename);
2:您必须实际打印文件名:

例如:

public static void main(String[] args) {

    ...

    getInputFileName();
System.out.println("Enter filename here : ");
String filename = keyboard.nextLine();

...

System.out.println(filename);

这看起来像是的完全复制品。我知道是的,但这个问题是为什么我编译它时会这样,而不是打印出“enterfilename:”部分?我一直在努力通过阅读我的编程书,并将其应用到这个程序中,尝试向该方法添加部分,但它仍然没有打印任何内容。您最好制作一个,并制作一个代码示例,其中没有任何对您的问题不重要的内容谢谢,我能够通过您给出的注释解决我的问题,但出于某种原因,在我写入文件名后,它会再次询问用户,然后它会打印文件输入名。我将编辑我的原始帖子,在我放置程序新部分的位置是否有任何错误?@user3605753有两个位置看起来您可能要求用户输入:
String filename=keyboard.nextLine()
sWhatever=scanIn.nextLine()