在Java中,如何从字符串中分别提取字符串和整数?
我正在做一项作业,我必须在扫描仪上键入行 以在Java中,如何从字符串中分别提取字符串和整数?,java,string,java.util.scanner,indexof,Java,String,Java.util.scanner,Indexof,我正在做一项作业,我必须在扫描仪上键入行 以U8为例U和8都有意义,因此,我必须将它们分开 以下是迄今为止我对U部分的了解: userInput = userInput + " "; index = userInput.indexOf(" "); strA = userInput.substring(0, index); userInput = userInput.substring(index+1, userInput.length()
U8
为例U
和8
都有意义,因此,我必须将它们分开
以下是迄今为止我对U
部分的了解:
userInput = userInput + " ";
index = userInput.indexOf(" ");
strA = userInput.substring(0, index);
userInput = userInput.substring(index+1, userInput.length());
index = userInput.indexOf(" ");
userInput = userInput.substring(index+1, userInput.length());
现在,我只是不知道如何单独提取整数。我该怎么做
最后,我需要从一行中提取多个字符串和整数。所有字符串整数对都用空格分隔,例如:U8 U7…
根据Paul的回答,我不能使用
Split()
,要使其能够用于任何数量的字符int输入,这些字符int输入之间用空格隔开,您可以使用:
String input = "U80 G9 Q4";
ArrayList<Integer> ints = new ArrayList<Integer>();
ArrayList<Character> chars = new ArrayList<Character>();
for (int i = 0; i < input.length() - 1; i++) {
char letter = input.charAt(i);
String num = "";
for(int j=i+1;j<input.length();j++){
i++;
if(input.charAt(j)!=' '){
num+=input.charAt(j);
}else{
break;
}
}
int number = Integer.parseInt(num + "");
ints.add(number);
chars.add(letter);
}
for (int i = 0; i < ints.size(); i++) {
System.out.println("Letter: " + chars.get(i) + " Number: " + ints.get(i));
}
很抱歉删除了代码中的提示,但我必须快速复制/粘贴,因为我很快就要离开了,但我希望这能有所帮助 根据Paul的答案,要使其适用于由空格分隔的任意数量的char int输入,您可以使用:
String input = "U80 G9 Q4";
ArrayList<Integer> ints = new ArrayList<Integer>();
ArrayList<Character> chars = new ArrayList<Character>();
for (int i = 0; i < input.length() - 1; i++) {
char letter = input.charAt(i);
String num = "";
for(int j=i+1;j<input.length();j++){
i++;
if(input.charAt(j)!=' '){
num+=input.charAt(j);
}else{
break;
}
}
int number = Integer.parseInt(num + "");
ints.add(number);
chars.add(letter);
}
for (int i = 0; i < ints.size(); i++) {
System.out.println("Letter: " + chars.get(i) + " Number: " + ints.get(i));
}
很抱歉删除了代码中的提示,但我必须快速复制/粘贴,因为我很快就要离开了,但我希望这能有所帮助 如果字母是字符串的第一个字符,数字是第二部分,那么可以使用charAt方法 例如:
String input="U8";
char letter=input.charAt(0);
char number=input.charAt(1);
//convert char to int
int integer=Integer.parseInt(""+number);
System.out.println("Letter: "+letter+" Number: "+integer);`
如果字母是字符串的第一个字符,数字是第二部分,那么可以使用charAt方法 例如:
String input="U8";
char letter=input.charAt(0);
char number=input.charAt(1);
//convert char to int
int integer=Integer.parseInt(""+number);
System.out.println("Letter: "+letter+" Number: "+integer);`
嘿,谢谢!我已经拥有的代码是否值得这么做?在某种程度上,我需要在一行上有多个字符串/int。全部用空格U8 U7等隔开?@Jon Roy如果这对你有帮助,请+1这段代码,而且我已经添加了一个答案,这个答案在这段代码的基础上继续,你想用空格做什么就做什么谢谢!我已经拥有的代码是否值得这么做?在某种程度上,我需要在一行上有多个字符串/int。都用空格U8 U7等隔开?@Jon Roy如果这段代码对你有帮助的话,请+1这段代码,我还添加了一个答案,这个答案延续了这段代码,你想用空格做什么就做什么。我的教授说,这“太简单”不会教我们编程。有没有办法让我得到它,如果有一个10而不是1,它会认出它是10而不是1?好吧,那太傻了,我从来没有听过教授这么说,为了回答你的问题,你想要U10而不是U1吗?你是希望有多个字母,还是仅仅numbers@JonRoy我已经编辑了处理多个数字的代码谢谢!非常地我将保存这段代码,这样我就可以重新阅读它,并围绕它编写一些程序,这样我就不会忘记它。Thanks@JonRoy这就是堆栈溢出的意义所在,快乐编程!我的教授说它“太简单”不会教我们编程。有没有办法让我得到它,如果有一个10而不是1,它会认出它是10而不是1?好吧,那太傻了,我从来没有听过教授这么说,为了回答你的问题,你想要U10而不是U1吗?你是希望有多个字母,还是仅仅numbers@JonRoy我已经编辑了处理多个数字的代码谢谢!非常地我将保存这段代码,这样我就可以重新阅读它,并围绕它编写一些程序,这样我就不会忘记它。Thanks@JonRoy这就是堆栈溢出的意义所在,快乐编程!我修改了你的问题,并试图改进你的解释,以使你的问题更容易理解。我还包括了你评论中的信息。下次,请使用问题下方的编辑按钮直接向问题添加其他信息。请尽可能准确地描述您的问题。这有助于读者更好地理解您的问题。例如,最好知道为什么不能使用
Split()
@honk Sorry mate!这个网站不太好。我会尽量记住这一点。谢谢,我修改了你的问题,并试图改进你的解释,以使你的问题更容易理解。我还包括了你评论中的信息。下次,请使用问题下方的编辑按钮直接向问题添加其他信息。请尽可能准确地描述您的问题。这有助于读者更好地理解您的问题。例如,最好知道为什么不能使用Split()
@honk Sorry mate!这个网站不太好。我会尽量记住这一点。谢谢你,伙计