在Java中如何读取后跟int的字符串?
我一直在努力完成这件事。我需要的是读取如下输入:在Java中如何读取后跟int的字符串?,java,java.util.scanner,inputstream,Java,Java.util.scanner,Inputstream,我一直在努力完成这件事。我需要的是读取如下输入:DEPOSITO 123 1000.00,但是字符串“DEPOSITO”需要保存在一个变量中,int“123”保存在另一个变量中,双精度“1000.00”保存在另一个变量中。问题是我找不到任何类似于scanner.nextString()的东西,如果我可以将字符串扫描到变量中,我可能可以使用scanner.nextInt()和scanner.nextDuble()扫描输入流的其余部分。如果我在尝试只读取字符串时执行scanner.next(),它会
DEPOSITO 123 1000.00
,但是字符串“DEPOSITO”需要保存在一个变量中,int“123”保存在另一个变量中,双精度“1000.00”保存在另一个变量中。问题是我找不到任何类似于scanner.nextString()的东西,如果我可以将字符串扫描到变量中,我可能可以使用scanner.nextInt()和scanner.nextDuble()扫描输入流的其余部分。如果我在尝试只读取字符串时执行scanner.next(),它会读取整行,那么我的问题的答案是什么?我真的不懂。因为输入总是以字符串开头,你可以先得到字符串,然后根据它确定后面有多少变量:
String input = scanner.nextLine();
// use regex to split string
String tokens = input.split("\\s+");
String firstPart = tokens[0];
int intPart = 0;
double doublePart = 0;
int transferenciaInt = 0;
if(firstPart.equals("SAQUE") || firstPart.equals("DEPOSITO"))
{
intPart = Integer.parseInt(tokens[1]);
doublePart = Double.parseDouble(tokens[2]);
}
else
{
intPart = Integer.parseInt(tokens[1]);
transferenciaInt = Integer.parseInt(tokens[2]);
doublePart = Double.parseDouble(tokens[3]);
}
有关正则表达式(regex)的更多信息,请参见:您可以像这样解析值
Scanner scanner = new Scanner(System.in);
String array[] = scanner.nextLine().split("\\s");
String strValue = array[0];
int intValue = Integer.valueOf(array[array.length - 2]);
int intValue1 = 0;
double doubleValue = Double.valueOf(array[array.length - 1]);
if ("TRANSFERENCIA".equalsIgnoreCase(strValue)) {
intValue1 = Integer.valueOf(array[array.length - 3]);
}
然后您将有3个字符串:
s[0]
将返回“存款”s[1]
返回“123”s[2]
它将返回“1000.00”Integer i = Integer.parseInt(s[1]);
Double d = Double.parseDouble(s[2]);
请注意按空格将字符串分成3个部分。您可以发布您遇到问题的代码部分吗?这将使我们更容易提供帮助you@user3814613已经回答了,但是谢谢。输入并不总是由3个部分组成,有时有4个部分。是什么决定了输入开头的字符串,如果它是“SAQUE”或“DEPOSITO”,那么它将有两个以上的部分(int和double)。但是,如果字符串是“Transferncia”,那么它有3个以上的部分(int、int和double),我可以看到它背后的逻辑,问题是。。我正在一步一步地调试我的程序,它将整行作为字符串输入读取,但当我执行
String[]tokens=input.split(\\s+”)
时,它不会分割字符串,我可以访问变量窗格,而tokens[0]
是整个输入。
Integer i = Integer.parseInt(s[1]);
Double d = Double.parseDouble(s[2]);