如何在 Java 中读取一个 String 后跟一个 int?
How to read a String followed by an int in Java?
我一直在努力完成这件事。我需要的是读取这样的输入:DEPOSITO 123 1000.00
,但是字符串 "DEPOSITO" 需要保存在一个变量中,int“123”保存到另一个变量,double“1000.00”保存到另一个变量.问题是我找不到像 scanner.nextString()
这样的东西,如果我可以只将字符串扫描到一个变量中,我可能可以用 scanner.nextInt()
和 scanner.nextDouble()
扫描输入流的其余部分.如果我尝试 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) 的更多信息,请参阅:Learning Regular Expressions
你可以像这样解析值
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]);
}
String[] s = scanner.nextLine().split(" ");
那么你将有 3 个字符串:
s[0]
那会 return "DEPOSITO"
s[1]
returns "123"
s[2]
它将 return "1000.00"
现在:
Integer i = Integer.parseInt(s[1]);
Double d = Double.parseDouble(s[2]);
我一直在努力完成这件事。我需要的是读取这样的输入:DEPOSITO 123 1000.00
,但是字符串 "DEPOSITO" 需要保存在一个变量中,int“123”保存到另一个变量,double“1000.00”保存到另一个变量.问题是我找不到像 scanner.nextString()
这样的东西,如果我可以只将字符串扫描到一个变量中,我可能可以用 scanner.nextInt()
和 scanner.nextDouble()
扫描输入流的其余部分.如果我尝试 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) 的更多信息,请参阅:Learning Regular Expressions
你可以像这样解析值
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]);
}
String[] s = scanner.nextLine().split(" ");
那么你将有 3 个字符串:
s[0]
那会 return "DEPOSITO"s[1]
returns "123"s[2]
它将 return "1000.00"
现在:
Integer i = Integer.parseInt(s[1]);
Double d = Double.parseDouble(s[2]);