Java分裂输入
我正在尝试为我的项目编写一个简单的代码 如果用户类型 步行10 我需要在我的步行(距离)方法中使用“步行”命令,因为距离=10 我有类似的东西Java分裂输入,java,string,input,split,Java,String,Input,Split,我正在尝试为我的项目编写一个简单的代码 如果用户类型 步行10 我需要在我的步行(距离)方法中使用“步行”命令,因为距离=10 我有类似的东西 while (!quit) { Scanner in = new Scanner(System.in); String input = in.nextLine(); // if (walk x is typed) { walk(x); } } 我正在使用java.util.scanner 另一个问题是我的方法walk(intx)使用int 所以我需要将
while (!quit) {
Scanner in = new Scanner(System.in);
String input = in.nextLine();
// if (walk x is typed) {
walk(x);
}
}
我正在使用java.util.scanner
另一个问题是我的方法walk(intx)使用int
所以我需要将字符串输入转换为int
我在网上搜索了一会儿,但找不到我要找的东西(或者我不懂)
不管怎样如果你能帮我我会很感激的谢谢
非常感谢所有的答案我最初的问题已经解决了
但现在我有另一个问题
当我只键入“walk”时,它会得到数组越界异常
当然,因为它试图将null转换为int(不可能)
我试过了,并在网上查了一下
try {
Integer.parseInt(splitStrings[1]);
}
catch(NumberFormatException e) {
System.out.println("error: " + e);
}
仍然没有帮助(我不擅长尝试/捕捉)
所以,如果用户类型步行没有距离,我需要给出一个错误消息
再次非常感谢
好的,我也知道了
只是用了一个简单的东西
if ("walk".equals(splitStrings[0])) {
if (splitStrings.length == 2) {
int distance = Integer.parseInt(splitStrings[1]);
Robot.walk(distance);
}
if (splitStrings.length != 2) {
System.out.println("Entry must be like walk 10");
}
}
您可以在空间上拆分,在这种情况下,数字将是结果数组的第二个元素(索引1) 编辑Adam Liss的以下评论
Integer x = Integer.parseInt(input.split(" ")[1])
您可以使用以下方法:
尝试:
假设从字符串中去掉整数部分,例如留下 “walk 10”加上“10”,只需使用
// say you've parsed the "number" portion into a variable "inputString"
int x;
x= Integer.parseInt(inputString);
尝试对字符串使用split()方法。它将返回一个字符串数组。比如说
String s = 'walk 10';
String[] splitStrings = s.split(" ")
现在,要访问10,您可以执行以下操作:
String distanceToWalk = splitStrings[1]
要将其转换为int,请对Integer使用parseInt()方法
Integer.parseInt(distanceToWalk);
看
您可以使用以下选项:
// For read the input
InputStreamReader streamReader = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(streamReader);
String input = reader.readLine();
如果您喜欢使用扫描仪
,则
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
然后:
如果你想多读几行
for(String input; sc.hasNextLine();) {
input = sc.nextLine();
// do something
}
或
它们之间是否有空格?是的,用户键入walk 10或walk 25您可以使用Integer.parseInt来获取整数值,在使用split获得输入行+1中的所有令牌后,您需要获得整数值,以获得整洁的解决方案,尽管假设这是用户输入,您还需要首先去掉多余的空格(否则,您的号码将位于数组中的错误位置).等等,什么???你不能将字符串转换为整数!真为你们所有的投票人感到羞耻。@AdamLiss你绝对正确,相应地修改了答案。@草莓+1用于更新。还有大胆地发布了一个甚至不是有效Java的答案…并且仍然获得了3张投票票!非常感谢。这正是我想要的将输入从空白处拆分为2,并将10转换为整数如何将标记器与java.util.scanner一起使用?我为
StringTokenizer
和scanner
添加了标记器。
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
StringTokenizer st = new StringTokenizer(input);
if (st.countTokens == 2) { // Only for two tokens "walk 100", "return 10"
String method = st.nextToken();
if (method.equals("walk") { // if you have more methods like "walk"
int distance = Integer.parseInt(st.nextToken());
walk(distance); // walk
}
}
for(String input; sc.hasNextLine();) {
input = sc.nextLine();
// do something
}
for(String input; (input = reader.readLine()) != null;) {
// do something
}