Java 将字符串分隔为不带数组的独立变量
我需要帮助将字符串分隔成单独的变量。我正在尝试制作一个程序,使用nextLine()获取用户输入,然后需要分离该字符串中的字符Java 将字符串分隔为不带数组的独立变量,java,string,Java,String,我需要帮助将字符串分隔成单独的变量。我正在尝试制作一个程序,使用nextLine()获取用户输入,然后需要分离该字符串中的字符 例如,用户可以输入第23plus行或第23plus行 我读过关于.split的文章,但只有当输入中有空格时,它才会起作用。我可以说第一个数字是charAt(0),但是我怎么才能得到其余的呢 你说,问题是“一位数计算器”的后缀符号是23+: digits=digits.replaceAll(“\\\\s”和“”) 第一个数字:intop1=Integer.parseIn
例如,用户可以输入第23plus行或第23plus行
我读过关于.split的文章,但只有当输入中有空格时,它才会起作用。我可以说第一个数字是charAt(0),但是我怎么才能得到其余的呢 你说,问题是“一位数计算器”的后缀符号是23+:
digits=digits.replaceAll(“\\\\s”和“”)代码>
- 第一个数字:
intop1=Integer.parseInt(digits.charAt(0))代码>
- 第二位:
intop2=Integer.parseInt(digits.charAt(1))代码>
- 运算符:
,我建议在开关/机箱中使用+,-,/,*数字。字符(2)
- 结果:5
字符串上逐个字符循环并检查它是否是数字,怎么样:
final List<Integer> values = new LinkedList<>();
final StringBuilder operator = new StringBuilder();
for (final char c : input.toCharArray()) {
if (Character.isDigit(c)) {
values.add(Integer.parseInt(Character.toString(c)));
} else if (!Character.isWhitespace(c)) {
operator.append(c);
}
}
final List values=new LinkedList();
最终StringBuilder运算符=新StringBuilder();
for(最终字符c:input.toCharArray()){
if(字符isDigit(c)){
add(Integer.parseInt(Character.toString(c));
}else如果(!Character.isWhitespace(c)){
附加运算符(c);
}
}
注意:仅当输入形式为“WdigitDigitWoOperator”,其中“W”为可选空白时,此操作才有效
但我知道你的问题就是这样
另一种选择是使用正则表达式,它看起来像:
final Pattern p = Pattern.compile("^\\s*+(?<firstDigit>\\d)\\s*+(?<secondDigit>\\d)\\s*+(?<operator>\\w++)$");
final Matcher matcher = p.matcher(input);
if(matcher.matches()) {
System.out.println(matcher.group("firstDigit"));
System.out.println(matcher.group("secondDigit"));
System.out.println(matcher.group("operator"));
}
final Pattern p=Pattern.compile(“^\\s*+(?\\d)\\s*+(?\\d)\\s*+(?\\w++)$”;
最终匹配器匹配器=p.Matcher(输入);
if(matcher.matches()){
System.out.println(匹配器组(“第一位”);
System.out.println(匹配器组(“第二位”);
System.out.println(匹配器组(“运算符”);
}
如果这是一项家庭作业(我怀疑是),这可能不是一个可接受的解决方案。您的程序如何区分23plus
意思是23plus
和23plus
意思是23 plus
?这没有意义。给定输入1234plus
您的逻辑是什么12 34 plus
1 234 plus
?除非您知道行的一般结构以及如何拆分,否则无法拆分行。如果我们想提供帮助,您需要告诉我们这些事情以及更多可能的输入和输出示例。正如你写的那样,你的问题没有意义,也没有答案。它应该是一个单位数字的计算器。我会取一个数字,然后执行“我读到过。拆分,但只有在输入中有空格时才有效”的操作。这一操作甚至一点都不正确:您也可以查看,甚至只是和。“用户可以输入第23plus行或第23plus行”-这不能很好地处理第二种情况…如果索引1中有空格,那么这将如何工作?使用s.replaceAll(“\\s”,“”)清除空格
@Aubin如果你在答案中加入这一点,我将取消否决票,因为你的答案将完全回答问题。