【问题标题】:I am trying to take to char inputs from a single string using Scanner with .charAt()我正在尝试使用带有 .charAt() 的 Scanner 从单个字符串中获取字符输入
【发布时间】:2018-10-01 15:10:39
【问题描述】:

我正在尝试制作一个骰子滚轮,它可以接受单个输入并滚动具有一定数量边数的骰子一定次数。因此,如果我输入“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);

我相信这导致我必须创建两个输入,因为它会搜索“下一个”输入以在其中查找字符。我希望能够用一个输入来完成,是否有怎么做?

【问题讨论】:

  • 要只使用一个输入,请将输入存储到String 变量中,然后对该字符串执行charAt() 操作。
  • 请注意,根据 java 中的标准命名约定,变量名称应以小写开头
  • 谢谢,我会记住的。

标签: java java.util.scanner dice


【解决方案1】:

可以使用 Scanner 类的 nextLine 方法

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

该方法返回用户输入的完整行的字符串。 通过输入您的输入并按 Enter 来工作。

【讨论】:

  • 非常感谢,这比我想象的要简单得多。
【解决方案2】:

试试这个 扫描仪输入 = 新扫描仪(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);

【讨论】:

    【解决方案3】:

    你可能想一次得到整个字符串,定位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];
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多