gpt4 book ai didi

java - 必须输入两次才能扫描仪读取

转载 作者:行者123 更新时间:2023-12-01 14:43:16 25 4
gpt4 key购买 nike

因此,在这段代码中,在“run”方法中的“Run”类下,扫描仪似乎不想从第一次尝试中获取输入,只有在第二行才获取输入。我说第二行是因为我输入输入然后按两次回车键,然后在第三行输入输入,它会读取第二行,在这种情况下什么也没有。

我尝试过 BufferedReader 得到了相同的结果,所以我相信我正在做一些愚蠢的事情并忽略了一些事情。

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;

import java.io.*;

class Global {
public static int stop = -1;
}

public class DataSort {

public static void main(String[] args){

Timer timer = new Timer();
Direct swit = new Direct();
Run mprog = new Run();
Help hlp = new Help();

String newline = System.getProperty("line.separator");

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Scanner console = new Scanner(System.in);

System.out.println(newline);
System.out.println("Welcome to Data Sort! This Program is designed to sort information about targets discoverd by UAV and place the data in a table." + newline);
System.out.print("For help, press any key. To continue, please wait. ");
timer.schedule(swit, 3000);

try {
Global.stop = in.read();
}

catch(IOException e) {
e.printStackTrace();
}

try {
in.close();
}

catch(IOException e) {
e.printStackTrace();
}
}
}

class Direct extends TimerTask {

public void run() {

Run mprog = new Run();
Help hlp = new Help();

if(Global.stop != -1){
System.out.println("Help");
hlp.run();
}

if(Global.stop == -1) {
System.out.println("Main");
mprog.run();
}
}
}


class Help {

public static void run() {
String newline = System.getProperty("line.separator");

System.out.print(newline);
System.out.println("Entering Help Mode!" + newline);

System.out.println("Entered Help Class");
//String help = console.nextLine();
}
}

class Run {

public static void run() {

/*EnterAll eall = new EnterAll();
EnterCoords ecoords = new EnterCoords();
EnterRelation erelat = new EnterRelation();
EnterColor ecolor = new EnterColor();
EnterShape eshape = new EnterShape();
Coordinates coords = new Coordinates();
Relation relat = new Relation();
Color color = new Color();
Shape shape = new Shape();
List list = new List();
Save save = new Save();
SaveAs saveas = new SaveAs();*/

String newline = System.getProperty("line.separator");
Scanner console = new Scanner(System.in);

System.out.print(newline);
System.out.println("Initializing Main Program." + newline);
System.out.println("************************** MAIN MENU *************************" + newline);
System.out.println("Enter Coords \t Enter Relat \t Enter Color \t Enter Shape"+newline);
System.out.println("Coordinates \t Relation \t Color \t \t Shape" + newline);
System.out.println("Help \t \t List \t \t Save \t \t Save As" + newline);
System.out.println("**************************************************************" + newline);

System.out.print("Enter your selection or type All to enter lines consecutively: ");
String raw = console.nextLine();

System.out.println(raw);

String select = errorCheck(raw);

if (select.equals("All")){
}

if (select.equals("Enter Coords")){
}

if (select.equals("Enter Relat")){
}

if (select.equals("Enter Color")){
}

if (select.equals("Enter Shape")){
}

if (select.equals("Coordinates")){
}

if (select.equals("Relation")){
}

if (select.equals("Color")){
}

if (select.equals("Shape")){
}

if (select.equals("Help")){
}

if (select.equals("List")){
}

if (select.equals("Save")){
}

if (select.equals("Save As")){
}
}

private static String errorCheck(String raw) {

String select = raw;
return select;
}
}

最佳答案

你的问题在于

public class DataSort {...... Global.stop = in.read(); ......} 

因为in.read是读取Integer输入的。它不读取行尾字符。这就是为什么当你输入选择字符串并按回车键后它会变得毫 headless 绪。

问候,拉维

关于java - 必须输入两次才能扫描仪读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com