Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/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_File_Input_Io - Fatal编程技术网

Java 使用文本文件从用户处获取输入

Java 使用文本文件从用户处获取输入,java,file,input,io,Java,File,Input,Io,在请求用户输入时,我无法使用try-catch获得代码。以下是给定的作业: 公交车乘客座椅程序编写一个分配乘客的程序 公共汽车上的座位。假设一辆小客车的座位编号如下: 1 A B C D 2 A B C D 3 A B C D 4 A B C D 5 A B C D 6 A B C D 7 A B C D 8 A B C D程序应显示座椅 模式,带有一个指示器(如X)标记座椅 分配。例如,座椅1A、2B和4C就座后 显示应如下所示:1 X B C D 2 A X C D 3 A B C D 4

在请求用户输入时,我无法使用try-catch获得代码。以下是给定的作业:

公交车乘客座椅程序编写一个分配乘客的程序 公共汽车上的座位。假设一辆小客车的座位编号如下:
1 A B C D 2 A B C D 3 A B C D 4 A B C D 5 A B C D 6 A B C D 7 A B C D 8 A B C D程序应显示座椅 模式,带有一个指示器(如X)标记座椅 分配。例如,座椅1A、2B和4C就座后 显示应如下所示:1 X B C D 2 A X C D 3 A B C D 4 A B X D 5 A B C D 6 A B C D 7 A B C D 8 A B C D
显示可用座椅后,程序会提示输入设置 需要时,用户在座椅上键入,然后显示可用的 座位更新。直到所有座位都坐满或 用户发出信号说程序应该结束。如果用户在 已分配的座位,程序应说明该座位已分配 有空,请另作选择。程序输出票据 用户使用以下详细信息在文本文件和UI中预订: :该程序还能够接受 包含上述详细信息并确定 文本文件上的座位号内容是否已被占用。 同样,保留座位的汇总与乘客一起 可以在UI和其他文本文件中查看名称很抱歉,没有组织的放置,我似乎无法在其中添加新行。

以下是我目前的代码:

package busticket;

import java.util.*;
import java.io.*;

public class BusTicket {

    public static void printArray(char[][] Ticket) {
        for (int i = 0; i < Ticket.length; i++) {
            System.out.println((i + 1) + "   " +
                    Ticket[i][0] + " " + Ticket[i][1] + "  " +
                    Ticket[i][2] + " " + Ticket[i][3]);
        }
    }

    public static void main(String[] args) {
        Scanner get = new Scanner(System.in);
        PrintWriter a;
        String f;

        char Again;
        char[][] Ticket = new char[8][4];


        System.out.println("Hello Sir/Ma'am here is the list of the available seats:");

        for (int i = 0; i < 8; i++) {
            Ticket[i][0] = 'A';
            Ticket[i][1] = 'B';
            Ticket[i][2] = 'C';
            Ticket[i][3] = 'D';
        }

        printArray(Ticket);

        int counter = 0;
        do {

            do {
                System.out.println("Press 1 for Manual input.");
                System.out.println("Press 2 for Text input.");
                int Choice = get.nextInt();

                if (Choice == 1) {
                    get.nextLine();
                    System.out.println("Please enter your name: ");
                    String name = get.nextLine();
                    System.out.println("Please enter your desired seat. (ex: 1A).");
                    String seat = get.nextLine();

                    int row = seat.charAt(0) - '1';
                    int column = seat.charAt(1) - 'A';

                    if (row < 0 || row > 8 || column < 0 || column > 4) {
                        System.out.println("Wrong input.");
                    } else {
                        if (Ticket[row][column] != 'X') {
                            Ticket[row][column] = 'X';
                            printArray(Ticket);
                            System.out.println("Reserved:" + name + "-" + seat);

                            try {
                                a = new PrintWriter(new FileWriter("output.txt", true));
                                a.write(String.format(name));
                                a.write("-");
                                a.write(String.format(seat));
                                a.write("\n");
                                a.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            counter++;
                        } else {
                            System.out.println("THAT SEAT IS TAKEN!!!");

                        }
                    }
                } else if (Choice == 2) {
                    get.nextLine();
                    try {
                        String str;
                        Scanner g = new Scanner(new File("input.txt"));
                        while ((str = g.nextLine()) != null) {
                            String[] ar = str.split("-");
                            String name = ar[0];
                            String seat = ar[1];
                        }
                    } catch (Exception e) {
                    }

                    int row = seat.charAt(0) - '1';
                    int column = seat.charAt(1) - 'A';

                    if (row < 0 || row > 8 || column < 0 || column > 6) {
                        System.out.println("Wrong input.");
                    } else {
                        if (Ticket[row][column] != 'X') {
                            Ticket[row][column] = 'X';
                            printArray(Ticket);
                            System.out.println("Reserved:" + name + "-" + seat);

                            try {
                                a = new PrintWriter(new FileWriter("output.txt", true));
                                a.write(String.format(name));
                                a.write("-");
                                a.write(String.format(seat));
                                a.write("\n");
                                a.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            counter++;
                        } else {
                            System.out.println("THAT SEAT IS TAKEN!!!");

                        }
                    }
                }
                do {
                    System.out.print("\nReserve again? Press Y to Reserve again. Press N to exit and print the receipt.(Y/N): ");
                    Again = get.next().charAt(0);
                    Again = Character.toUpperCase(Again);
                    get.nextLine();
                } while ((Again != 'Y') && (Again != 'N'));
            } while (Again == 'Y');
            if (Again == 'N' || Again == 'n') {
                try {
                    Scanner d = new Scanner(new File("output.txt"));
                    while ((f = d.nextLine()) != null) {
                        System.out.println("Reserved:");
                        System.out.println(f);

                    }
                } catch (Exception e) {
                }
                System.exit(0);
            }
        } while (counter < 32);
    }
}
如何让代码读取字符串名称并放置在try-catch中,而不破坏代码的逻辑?无法读取try catch中的所有变量

无法读取try catch中的所有变量

我猜你的意思是“我不能从try-catch外部引用我在try-catch内部声明的变量。”

如果这是你的问题,那么在该区块之外声明它们,如下所示:

String name = null;
String seat = null;

try
{
  // logic to determine name
  name = ar[0];
  seat = ar[1];
}
catch
{
  e.printStackTrace(); // always put something in the catch
}

然后可以引用该块之外的变量。变量作用域位于声明变量的块内;您可以在内部作用域中使用变量,但不能在外部作用域中使用。

如果您将代码缩小到仅相关的代码行,并在需要时提供更多代码,您将在回答时获得更大的成功。对于此项目,只需在类的顶部声明
字符串名称
字符串位置
。将来,您可能会想看看如何将它们封装在一个对象中,并将类分解为处理/返回对象的方法。非常感谢!工作很有魅力:-0
String name = null;
String seat = null;

try
{
  // logic to determine name
  name = ar[0];
  seat = ar[1];
}
catch
{
  e.printStackTrace(); // always put something in the catch
}