嗨,大家好,我忙于分解/分割琴弦。 但是字符串不是固定的,因此当输入更改时,程序仍必须使用任何字符输入。
到现在我已经走了这么远,但我迷路了。
我制作了一个字符数组,并将数组的大小设置为等于将作为输入的任何字符串的长度。我做了一个for循环来遍历字符串的字符。
我现在如何将我的字符串插入数组,因为我知道我的字符串还不在那?然后,当它最终遍历我的字符串的字符时,必须在不同的行上打印出数字和操作数。因此,在这种情况下,输出看起来像这样;
1
+
3
,
432
。
123
等
我希望不使用匹配器,扫描器等来执行此操作。我想使用基本的Java技术,就像您在HeadfirstJava的前三章中学到的那样。
{{1}}
答案 0 :(得分:2)
您可以使用Character.isDigit(char)
来区分数字字符而不是数字字符,因为实际上这是将多个字符分组在同一行中的单个条件。
它会给出:
public static void main(String[] args) {
String inputString = "1+3,432.123*4535-24.4";
String currentSequence = "";
for (int i = 0; i < inputString.length(); i++) {
char currentChar = inputString.charAt(i);
if (Character.isDigit(currentChar)) {
currentSequence += currentChar;
continue;
}
System.out.println(currentSequence);
System.out.println(currentChar);
currentSequence = "";
}
// print the current sequence that is a number if not printed yet
if (!currentSequence.equals("")) {
System.out.println(currentSequence);
}
}
Character.isDigit()
依赖于unicode类别。
您可以自己编写代码,例如:
if (Character.getType(currentChar) == Character.DECIMAL_DIGIT_NUMBER) {...}
或者您可以通过检查int
的{{1}}值是否包含在数字的ASCII十进制值范围内来对其进行较低级别的编码:
char
它输出您想要的内容:
1
+
3
,
432
。
123
*
4535
-
24
。
4
答案 1 :(得分:1)
char[] charArray = inputString.toCharArray();
答案 2 :(得分:1)
这是一种可能的解决方案,其中我们逐个字符地添加到现有的字符串(将是我们的数字)中,或者将字符串添加到数组中,清除当前数字,然后添加特殊字符。最后,我们遍历数组的次数与找到数字或非数字字符的次数相同。我使用ASCII表将字符标识为数字,该表将在整个编程生涯中派上用场。最后,我将数组更改为String数组,因为字符无法容纳“ 432”之类的数字,只能容纳“ 4”或“ 3”或“ 2”。
getAdapterPosition()
重要-如果使用某种类型的String,此算法将失败。您可以找到该算法失败的字符串吗?您可以怎么做以确保计数始终正确,有时不比实际计数大1?
答案 3 :(得分:1)
这比您想象的要容易。
第一:要获取包含字符串字符的数组,只需使用所有字符串都具有的toCharArray()
方法。
例如myString.toCharArray()
第二:看到一个字符不是数字时,您要移至下一行,打印该字符,然后再次移至下一行。
以下代码完全可以做到:
public class JavaApplication255 {
public static void main(String[] args) {
String inputString = "1+3,432.123*4535-24.4";
char[] destArray = inputString.toCharArray();
for (int i = 0 ; i < destArray.length ; i++){
char c = destArray[i];
if (isBreakCharacter(c)){
System.out.println("\n" + c);
} else {
System.out.print(c);
}
}
}
public static boolean isBreakCharacter(char c){
return c == '+' || c == '*' || c == '-' || c == '.' || c == ',' ;
}