Альтернатива записи вручную в консоли - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть программа, которая сканирует ввод, написанный в консоли, и выдает результат из нее. Как я могу записать эту строку прямо в мой код, чтобы мне не приходилось вручную записывать ее в консоли каждый раз, когда я пробую программу? Я сканирую с java .util.Scanner.

Сейчас я запускаю тестер и набираю 4 слова в консоли. Затем программа дает мне желаемый результат. Как я могу автоматизировать набор текста?

import java.util.Scanner;
import java.io.PrintStream;

public class B6A4_Interpreter {
    public static void eingabe(Scanner sc, PrintStream ps) {
        String position ="";
        String zeichen = "";
        String in = "";
        String satz = "";
        String Ergebnis = "";
        int count = 0;
        while (count < 4) {
            position = sc.next();
            zeichen = sc.next();
            in = sc.next();
            satz = sc.next();
            count = 4;
        }
        sc.close();
        if (position.equals("nach") && (satz.length() != 0)) {
            Ergebnis = satz.substring(satz.indexOf(zeichen)+1);
        }
        else if (position.equals("nach") && (satz.length() == 0)) {
            Ergebnis = "Zeichenfolge";
        }
        else if (position.equals("vor") && (satz.length() != 0)) {
            Ergebnis = satz.substring(0,satz.lastIndexOf(zeichen));
        }
        else if (position.equals("vor") && (satz.length() == 0)) {
            Ergebnis = "";
        }
        ps.println(Ergebnis);
    }
}

Тестер:

import java.io.InputStream;
import java.util.Scanner;


public class Test_B6A4 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        B6A4_Interpreter.eingabe(sc, System.out);

    }
}

Большое спасибо!

1 Ответ

1 голос
/ 25 февраля 2020

Вы должны использовать тесты здесь. Я предлагаю JUnit5. Но если вы не хотите этого делать, вы можете заполнить сканер вручную:

public static void main(String[] args) {
        Scanner sc = new Scanner("FirstItem SecondItem ThirdItem FourthItem");
        B6A4_Interpreter.eingabe(sc, System.out);
}

Если вы хотите иметь значения с пробелами, вы можете установить разделитель, например, для новой строки:

public static void main(String[] args) {
        Scanner sc = new Scanner("First Item\nSecond Item\nThird Item\nFourthItem");
        sc.useDelimiter(Pattern.compile("(\\n)|;"));
        B6A4_Interpreter.eingabe(sc, System.out);
}
...