我正在尝试使用带有 .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];
我正在尝试制作一个骰子滚筒,它可以接受单个输入并滚动具有一定数量面的骰子一定次数。所以如果我输入“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];