如何在Java方法中复用Scanner输入变量?解决重复输入问题
解决重复输入姓名及方法传参问题
你现在的问题核心是两次调用了getName方法——main里先调用了一次getName(keyboard),然后调用getRounds的时候又写了getName(),这就导致getName里的输入提示逻辑执行了两遍,自然会重复让用户输入姓名。另外代码里还有两处拼写错误,得先修正。
修正步骤:
- 调用
getName方法时,把返回的姓名存到一个变量里,不要直接丢弃返回值 - 把这个变量作为参数传给
getRounds方法,而不是再次调用getName - 修正代码里的拼写错误:
Sting改成String,方法内的getname改成和参数名一致的命名(建议用更清晰的名称比如playerName)
修正后的完整代码:
import java.util.Scanner; // 别忘了导入Scanner类,原代码可能遗漏了这一行 public class RockPaperScissors { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); // 调用getName并将返回的姓名存入变量 String playerName = getName(keyboard); // 将变量作为参数传入getRounds getRounds(keyboard, playerName); } public static String getName(Scanner keyboard) { System.out.print("Welcome to ROCK PAPER SCISSORS. I, Computer, will be your opponent.\n"); System.out.print("Please type in your name and press return: "); String name = keyboard.next(); System.out.print("\nWelcome " + name + "."); return name; } public static int getRounds(Scanner keyboard, String playerName) { System.out.println(); System.out.print("\nAll right " + playerName + ", how many rounds would you like to play?\n"); System.out.print("Enter the number of rounds you want to play and press return: "); int rounds = keyboard.nextInt(); return rounds; } }
关键说明:
- 变量
playerName存储了用户第一次输入的姓名,后续直接传递这个变量给getRounds,不会再次触发输入提示 - Java是大小写敏感的语言,必须修正
Sting→String的拼写错误,同时保证变量名和引用时的名称一致 - 把参数名改成
playerName是为了避免和方法名getName混淆,让代码可读性更强
内容的提问来源于stack exchange,提问作者lolfunny
相关产品推荐
相关产品推荐

