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