我试图制造一个骰子滚轮,该滚轮可以接受一次输入,并在一定数量的侧面上掷出一定数量的骰子。因此,如果我输入“ 2d4”,它将在4面骰子上滚动2次,并分别给我两个结果。为此,我一直尝试使用扫描程序类,因为这对编程来说还很陌生。我试图一步一步地使用我所知道的。我肯定有更好的类可以使用,但是我想专门使用扫描仪。
import java.util.Scanner;
import java.util.Random;
public class DiceRoller3 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random Random = new Random();
char NumberOfDice = input.next().charAt(0);
char DieType = input.next().charAt(2);
我相信这导致我不得不创建两个输入,因为它正在搜索“下一个”输入以查找字符。我希望能够使用一个输入来完成操作,是否有一个做到这一点的方法?
答案 0 :(得分:1)
您可以使用Scanner类的nextLine方法
String userInput = input.nextLine();
char noOfDie = userInput.charAt(0);
char dieType = userInput.charAt(2);
该方法返回用户输入的完整行的字符串。 输入您的输入并按Enter键即可工作。
答案 1 :(得分:0)
尝试一下 扫描仪输入=新的Scanner(System.in); 随机随机=新的Random();
String inputString = input.next();
char numberOfDice = inputString.charAt(0);
char dieType = inputString.charAt(2);
请记住,每次调用扫描仪的next()时,您都会从输入流中读取下一个String值。 当然,如何输入数据完全取决于您,但是您也可以单独输入数据,即
2
d
4
代替
2d4
在这种情况下,您会这样阅读:
char numberOfDice = input.next().charAt(0);
char die = input.next().charAt(0);
char dieType = input.next().charAt(0);
答案 2 :(得分:0)
我不是Java专家,但如果格式始终为数字d,则可以执行此操作
[Employee [employeeId=1026751, employeeName=Jack Reacher], Employee [employeeId=1026751, employeeName=Jack Reacher], Employee [employeeId=1026722, employeeName=Tom Cruise]]
编辑:如果您的骰子数可以超过9,这会更好
Scanner input = new Scanner(System.in);
String myinput= input.nextLine();
int NumberOfDice=Character.getNumericValue(myinput.charAt(0));
int DieType= Character.getNumericValue(myinput.charAt(2));
答案 3 :(得分:0)
您可能想一次获取整个字符串,找到d
的位置,然后获取它的左右部分:
Scanner input = new Scanner(System.in);
String string = input.nextLine();
int indexOfD = string.indexOf('d');
String numberOfDice = string.substring(0, indexOfD);
String dieType = string.substring(indexOfD + 1, string.length());
System.out.println(numberOfDice);
System.out.println(dieType);
或者,您也可以使用d
作为分隔符来分割字符串:
String[] parts = string.split("d");
String numberOfDice = parts[0];
String dieType = parts[1];