我正在尝试使用带有.charAt()

时间:2018-10-01 06:46:08

标签: java java.util.scanner dice

我试图制造一个骰子滚轮,该滚轮可以接受一次输入,并在一定数量的侧面上掷出一定数量的骰子。因此,如果我输入“ 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);

我相信这导致我不得不创建两个输入,因为它正在搜索“下一个”输入以查找字符。我希望能够使用一个输入来完成操作,是否有一个做到这一点的方法?

4 个答案:

答案 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];