我正在尝试使用带有 .charAt() 的扫描仪从单个字符串获取字符输入

I am trying to take to char inputs from a single string using Scanner with .charAt()

我正在尝试制作一个骰子滚筒,它可以接受单个输入并滚动具有一定数量面的骰子一定次数。所以如果我输入“2d4”,它会掷一个 4 面骰子 2 次,并分别给我两个结果。为此,我一直在尝试使用扫描仪 class,因为我对编程还很陌生。我试图一步一步地使用我所知道的。我确定有更好的 classes 可以使用等等,但我正在尝试专门使用扫描仪来做到这一点。

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);

我认为这导致我必须创建两个输入,因为它会搜索 "next" 输入以在其中查找字符。我希望能够通过一个输入来完成,有办法吗?

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

    String inputString = input.next();
    char numberOfDice = inputString.charAt(0);
    char dieType = inputString.charAt(2);

请注意,每次为扫描器调用 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方法class

String userInput = input.nextLine();
char noOfDie = userInput.charAt(0);
char dieType = userInput.charAt(2);

方法returns用户输入的完整行的字符串。 通过提供您的输入并按回车键来工作。

我不是 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];