在java中调用两个不同方法的相同输入

在java中调用两个不同方法的相同输入,java,Java,我正在尝试用java为KWIC实现main方法。我遇到的问题是,我必须询问用户是否希望从控制台/文件写入输入,并将输出写入控制台/文件。当我必须阅读时,第一次向用户请求控制台/文件可以正常工作,但当我再次向他们请求输出时,我相信它会回到第一个If条件。这是代码供参考 try { System.out.println("Please enter FILE to input from file or CONSOLE to input from console:"

我正在尝试用java为KWIC实现main方法。我遇到的问题是,我必须询问用户是否希望从控制台/文件写入输入,并将输出写入控制台/文件。当我必须阅读时,第一次向用户请求控制台/文件可以正常工作,但当我再次向他们请求输出时,我相信它会回到第一个If条件。这是代码供参考

try {

        System.out.println("Please enter FILE to input from file or CONSOLE to input from console:");
        String userInput = "";
        while ((userInput = scannerWrapper.nextLine()) != "-1") {

            if (userInput.equals("CONSOLE")) {

                System.out.println("Please enter FILE to output from file or CONSOLE to output from console:");
                List<String> cshiftConsole = circularShifter.shiftLines(inputFromConsole.read());

                if (userInput.equals("CONSOLE")) {

                    System.out.println("Please enter lines to add, then enter -1 to finish:");

                    // Console

                    cshiftConsole = alphabetizer.sort(cshiftConsole);
                    outputToConsole.write(cshiftConsole);

                    for (String element : cshiftConsole) {
                        System.out.println(element);
                    }
                }

            }

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

在第二次
CONSOLE(userInput)
之后,应该要求我输入行,但是这将
CONSOLE
作为我想要循环移位的输入。任何帮助都将非常感谢。

您的代码中有一些问题,如果我理解正确,您希望决定从何处输入,从何处输出,并将两个
字符串
放入
列表

  • (userInput=scannerWrapper.nextLine())!=“-1”
    您可以使用
    .equals(…)
    比较Java中的字符串,就像您在下面的代码中所做的那样

  • 每次你问用户想从哪里输入时,你只需要读一次,所以不要把它放在
    中,而要在
    if
    上做

  • 在每次迭代中创建列表,将其作为实例成员

  • 在每次打印对象的迭代中,等待用户首先停止添加项目(他们键入
    -1

  • 更好的方法可以是这样:

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class InputCycle {
        private Scanner scanner;
        private static final String CONSOLE = "CONSOLE";
        private static final String EXIT_CODE = "-1";
        private List<String> list;
        
        public static void main(String[] args) {
            new InputCycle().readAndWrite();
        }
        
        private void readAndWrite() {
            scanner = new Scanner(System.in);
            list = new ArrayList<String>();
            
            System.out.println("INPUT FROM CONSOLE / FILE");
            String input = scanner.nextLine(); // Read where to input from
            
            if (input.equals(CONSOLE)) { 
                System.out.println("OUTPUT TO CONSOLE / FILE");
                
                String output = scanner.nextLine(); // Read where to output to
                
                if (output.equals(CONSOLE)) {
                    System.out.println("WRITE LINES (" + EXIT_CODE + " TO EXIT)");
                    String line = "";
                    do {
                        line = scanner.nextLine(); // Read every line
                        if (!line.equals(EXIT_CODE)) {
                            list.add(line);
                        }
                    } while (!line.equals(EXIT_CODE));
                } else { // Write to a file with your own code
                    System.out.println("Writing to a file");
                }
            } else { //Read from a file
                System.out.println("Reading from a file");
            }
            
            System.out.println("ALL LINES: ");
            
            list.forEach(line -> System.out.println(line)); //Print all the lines user wrote
        }
    }
    

    请回答您的问题并将代码转换为a好吗?谢谢您使用扫描仪的nextLine()创建第二个字符串变量,这是我无法想到的。很高兴能提供帮助
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class InputCycle {
        private Scanner scanner;
        private static final String CONSOLE = "CONSOLE";
        private static final String EXIT_CODE = "-1";
        private List<String> list;
        
        public static void main(String[] args) {
            new InputCycle().readAndWrite();
        }
        
        private void readAndWrite() {
            scanner = new Scanner(System.in);
            list = new ArrayList<String>();
            
            System.out.println("INPUT FROM CONSOLE / FILE");
            String input = scanner.nextLine(); // Read where to input from
            
            if (input.equals(CONSOLE)) { 
                System.out.println("OUTPUT TO CONSOLE / FILE");
                
                String output = scanner.nextLine(); // Read where to output to
                
                if (output.equals(CONSOLE)) {
                    System.out.println("WRITE LINES (" + EXIT_CODE + " TO EXIT)");
                    String line = "";
                    do {
                        line = scanner.nextLine(); // Read every line
                        if (!line.equals(EXIT_CODE)) {
                            list.add(line);
                        }
                    } while (!line.equals(EXIT_CODE));
                } else { // Write to a file with your own code
                    System.out.println("Writing to a file");
                }
            } else { //Read from a file
                System.out.println("Reading from a file");
            }
            
            System.out.println("ALL LINES: ");
            
            list.forEach(line -> System.out.println(line)); //Print all the lines user wrote
        }
    }
    
    INPUT FROM CONSOLE / FILE
    CONSOLE
    OUTPUT TO CONSOLE / FILE
    CONSOLE
    WRITE LINES (-1 TO EXIT)
    FOO
    BAR
    BANANA
    -1
    ALL LINES: 
    FOO
    BAR
    BANANA