Я пытаюсь принять для ввода символов из одной строки с помощью сканера с .charAt () - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь сделать ролик для игры в кости, который может взять один вход и бросить матрицу с определенным числом сторон определенное количество раз.поэтому, если я введу «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 голосов
/ 01 октября 2018

Возможно, вы захотите получить всю строку сразу, найдите позицию 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];
0 голосов
/ 01 октября 2018

Вы можете использовать метод nextLine класса Scanner

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

Метод возвращает строку полной строки, введенную пользователем.Работает, введя ваш ввод и нажав Enter.

0 голосов
/ 01 октября 2018

Я не 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)));
0 голосов
/ 01 октября 2018

Попробуйте этот вход для сканера = новый сканер (System.in);Случайный Случайный = новый Случайный ();

    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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...