java - 句子生成器java

标签 java arrays string arraylist methods

我试图让这段代码获取每个变量,将其传递给构建器方法,并让它根据用户输入的内容创建一个完整的句子。构建器方法将其传递回主方法并打印出由“主语+动词+形容词+宾语+副词”组成的完整句子。

我需要将每个用户输入存储到 ArrayList 中吗?如果是这样,我如何提示用户输入每个新句子?我尝试过使用 for 循环,但它只要求我输入第一行 5 次,假设我创建了 Array[5]。

package assignment.pkg4.pkg3.string.input;
import java.util.Scanner;

public class Assignment43StringInput {
    private static Scanner scanner = new Scanner( System.in );
    public static void main(String[] args) {

        System.out.print("Enter a subject: ");
        String subject = scanner.nextLine();

        System.out.print("Enter a verb: ");
        String verb = scanner.nextLine();

        System.out.print("Enter an adjective: ");
        String adjective = scanner.nextLine();

        System.out.print("Enter an object: ");
        String object = scanner.nextLine();

        System.out.print("Enter an adverb: ");
        String adverb = scanner.nextLine();


        System.out.print(builder(text));

    }

    public static String builder(String text) {
        String sentence = subject + verb + adjective + object + adverb;
        return sentence;
    }            
}

最佳答案

如果我正确理解你的问题,你想为每个输入使用一个唯一的结构而不是一个变量。如果您知道您的大小始终为 5 并且不会改变,那么您可以使用 String[]。或者,您可以使用列表

但是如果您想确切地知道什么是什么,您可能需要尝试一下Map。我将用一个例子来解释它:

public class Assignment43StringInput {
  private static Scanner scanner = new Scanner( System.in );
  public static void main(String[] args) {
    Map<String, String> map = new HashMap<>();

    System.out.print("Enter a subject: ");
    map.put("subject", scanner.nextLine());

    System.out.print("Enter a verb: ");
    map.put("verb", scanner.nextLine());

    System.out.print("Enter an adjective: ");
    map.put("adjective", scanner.nextLine());

    System.out.print("Enter an object: ");
    map.put("object", scanner.nextLine());

    System.out.print("Enter an adverb: ");
    map.put("adverb", scanner.nextLine());

    System.out.print(builder(map));
  }

  public static String builder(Map<String,String> map) {
    return map.get("subject") + " " + map.get("verb") + " " + map.get("adjective") + " " + map.get("object") + " " + map.get("adverb");
  }            
}

这样您就可以根据需要轻松地重新排序句子,甚至可以添加更多元素。

关于java - 句子生成器java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134675/

相关文章:

java - 使用 spring4 @Transactional 时事务不起作用

java - 针对低性能硬件优化 spring boot

java - 如何根据区域设置获取带有时区的数据时间模式?

javascript - 在 Javascript 的值函数中使用数组键?

php - 性能: Empty string or null in PHP

java - 如何从控制台拆分用户输入?

arrays - 为什么在 PowerShell 中使用逗号连接字符串?

java - 这个算法不能正常工作?(棋盘皇后运动)

string - Oracle PL/SQL 中有分割字符串的函数吗?

c++ - 如何使用正则表达式删除 std::wstring 中特定短语的所有实例?