(Java, игры mad-libs) Я получаю два быстрых вопроса ввода в одной строке, когда у каждого должна быть своя собственная строка - PullRequest
0 голосов
/ 01 июля 2019

Это для игры Mad-libs из курса UW.Я там не студент, но просто следую за этим.

Текстовый файл, из которого я получаю информацию, выглядит следующим образом:

One of the most <adjective> characters in fiction is named
"Tarzan of the <plural-noun> ." Tarzan was raised by a/an
<noun> and lives in the <adjective> jungle in the
heart of darkest <place> . He spends most of his time
eating <plural-noun> and swinging from tree to <noun> .
Whenever he gets angry, he beats on his chest and says,
" <funny-noise> !" This is his war cry. Tarzan always dresses in
<adjective> shorts made from the skin of a/an <noun>
and his best friend is a/an <adjective> chimpanzee named
Cheetah. He is supposed to be able to speak to elephants and
<plural-noun> . In the movies, Tarzan is played by <person's-name> .

Вот мой вывод, с которым у меня проблемы:

Пожалуйста, введите / множественное число существительное: Пожалуйста, введите / существительное:

Я хочу, чтобы они были отдельными строками (очевидно).Это происходит только тогда, когда два «<>» находятся в одной строке.

Вот часть кода, которую я использую:

Scanner search = new Scanner(file);

    while (search.hasNextLine()) {
        String prompt = search.next();

        if (prompt.startsWith("<") && prompt.endsWith(">")) {
            prompt = prompt.replace('<', ' ');
            prompt = prompt.replace('>', ':');
            prompt = prompt.replace('-', ' ');
            System.out.print("Please type a/an" + prompt + " ");
            String funnyText = console.next();
            output.print(funnyText + " ");
        } else {
            output.print(prompt + " ");
        }
    }

Надеюсь, один из вас сможет это выяснить ипомогите мне.

что я пробовал:

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

public class Homework {
    public static void main(String[] args) throws FileNotFoundException {
    Scanner console = new Scanner(System.in);

    System.out.println("Welcome to the game of Mad Libs.");
    System.out.println("I will ask you to provide various words");
    System.out.println("and phrases to fill in a story.");
    System.out.println("The result will be written to an output file.");
    System.out.println();

    Boolean menuLoop = false;

    while (menuLoop == false) {
        System.out.print("(C)reate mad-lib, (V)iew mad-lib, (Q)uit? ");
        String input = console.next();
        if (input.toLowerCase().startsWith("c")) {
            create(console);
            menuLoop = true;
        } else if (input.toLowerCase().startsWith("v")) {
            System.out.println("Game will play soon.");
            menuLoop = true;
        } else if (input.toLowerCase().startsWith("q")) {
            System.out.println("Thanks for playing.");
            menuLoop = true;
        } else {
            menuLoop = false;
        }
    }
}

public static void create(Scanner console) throws FileNotFoundException {
    System.out.print("Input file name: ");
    String inputFile = console.next();
    File file = new File(inputFile);

    while (!file.exists()) {
        System.out.print("File not found. Try again: ");
        inputFile = console.next();
        file = new File(inputFile);
    }
    System.out.print("Output file name: ");
    String outputFile = console.next();
    PrintStream output = new PrintStream(new File(outputFile));
    System.out.println();

    Scanner search = new Scanner(file);

    while (search.hasNextLine()) {
        String prompt = search.next();

        if (prompt.startsWith("<") && prompt.endsWith(">")) {
            prompt = prompt.replace('<', ' ');
            prompt = prompt.replace('>', ':');
            prompt = prompt.replace('-', ' ');
            System.out.print("Please type a/an" + prompt + " ");
            String funnyText = console.next();
            output.print(funnyText + " ");
        } else {
            output.print(prompt + " ");
        }
    }

}

}

Вот мой вывод:

Добро пожаловать в игру Mad Libs.Я попрошу вас предоставить различные слова и фразы, чтобы заполнить историю.Результат будет записан в выходной файл.

(C) reate mad-lib, (V) iew mad-lib, (Q) uit?c Имя входного файла: tarzan.txt Имя выходного файла: output

Пожалуйста, введите a / прилагательное: sadgs Пожалуйста, введите a / множественное число существительное: sagsd sdagsd Пожалуйста, введите a / существительное: Пожалуйста, введите a / прилагательное:

Ответы [ 2 ]

0 голосов
/ 01 июля 2019

System.out.print не выводит символ новой строки в конце напечатанного элемента (ов).System.out.println добавит новую строку.Таким образом, вы можете использовать System.out.println, когда вы хотите следующий вывод в новой строке.

Например:

System.out.println("foo");
System.out.println("bar");

Дает

foo
bar
<blank line here>

Пока

System.out.print("foo");
System.out.print("bar");

Дает

foobar

Вы можете создавать новые строки там, где они вам нужны, с помощью

System.out.println("");
0 голосов
/ 01 июля 2019

Используйте System.out.println вместо. Это выводит вывод на новую строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...