Java 我试图使用Scanner with.charAt()从单个字符串获取字符输入

Java 我试图使用Scanner with.charAt()从单个字符串获取字符输入,java,java.util.scanner,dice,Java,Java.util.scanner,Dice,我在试着做一个骰子辊,它可以接受一次输入,并且可以将一个有一定数量边的骰子滚动一定次数。所以,如果我输入“2d4”,它会滚动一个4面模具2次,并分别给出两个结果。为了做到这一点,我一直在尝试使用scanner类,因为我对编程相当陌生。我试着一步一步地去做,用我所知道的。我确信有更好的类可以使用,但我正试图用scanner来做这件事 import java.util.Scanner; import java.util.Random; public class DiceRoller3 { p

我在试着做一个骰子辊,它可以接受一次输入,并且可以将一个有一定数量边的骰子滚动一定次数。所以,如果我输入“2d4”,它会滚动一个4面模具2次,并分别给出两个结果。为了做到这一点,我一直在尝试使用scanner类,因为我对编程相当陌生。我试着一步一步地去做,用我所知道的。我确信有更好的类可以使用,但我正试图用scanner来做这件事

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);
我相信这会导致我不得不创建两个输入,因为它会搜索“下一个”输入以在中查找角色。我想用一个输入就可以做到这一点,有办法吗?

试试这个 扫描仪输入=新扫描仪(System.in); 随机=新随机()

每次为扫描仪调用next()时,请注意从输入流中读取下一个字符串值。 当然,如何输入数据取决于您,但您也可以单独输入,即

2
d
4
而不是

2d4
在这种情况下,您可以这样读:

    char numberOfDice = input.next().charAt(0);
    char die = input.next().charAt(0);
    char dieType = input.next().charAt(0);

您可以使用Scanner类的nextLine方法

String userInput = input.nextLine();
char noOfDie = userInput.charAt(0);
char dieType = userInput.charAt(2);
该方法返回用户输入的完整行的字符串。
工作原理是输入并按enter键。

我不是java爱好者,但如果格式始终是数字d,您可以这样做

 Scanner input = new Scanner(System.in);
 String myinput= input.nextLine();
 int NumberOfDice=Character.getNumericValue(myinput.charAt(0));
 int DieType= Character.getNumericValue(myinput.charAt(2));
编辑:这是更好的,如果你的骰子数可以超过9

 int NumberOfDice=Integer.parseInt(myinput.substring(0,String.IndexOf("d")));
 int DieType =Integer.parseInt(myinput.substring(String.IndexOf("d")+1)));

您可能希望一次获取整个字符串,找到
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];

要仅使用一个输入,请将输入保存到
字符串
变量中,然后对该字符串执行
charAt()
操作。请注意,根据java变量中的标准命名约定,名称应以小写字母开头。我会记住这一点。非常感谢,这比我想象的要简单得多。
    String[] parts = string.split("d");

    String numberOfDice = parts[0];
    String dieType = parts[1];