分解任何字符串

时间:2018-09-12 17:30:00

标签: java arrays string for-loop

嗨,大家好,我忙于分解/分割琴弦。 但是字符串不是固定的,因此当输入更改时,程序仍必须使用任何字符输入。

到现在我已经走了这么远,但我迷路了。

我制作了一个字符数组,并将数组的大小设置为等于将作为输入的任何字符串的长度。我做了一个for循环来遍历字符串的字符。

我现在如何将我的字符串插入数组,因为我知道我的字符串还不在那?然后,当它最终遍历我的字符串的字符时,必须在不同的行上打印出数字和操作数。因此,在这种情况下,输出看起来像这样;

1

+

3

432

123

我希望不使用匹配器,扫描器等来执行此操作。我想使用基本的Java技术,就像您在HeadfirstJava的前三章中学到的那样。

{{1}}

4 个答案:

答案 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 == ',' ;
}