用于多个处理的单个Java StringTokenizer

时间:2016-11-29 20:13:30

标签: java collections stringtokenizer

我有一个Java字符串,例如" 10 20 30 40 50" 。我想多次根据一些业务需求使用 StringTokenizer 处理这些值。

例如,对于某些条件,我想要将每个值加倍,即" 20 40 60 80 100" ,对于另一个条件,我想要高音即, " 30 60 90 120 150"

我发现可以通过创建多个 StringTokenizer 来完成,每个条件一个。我的问题是,可以使用 StringTokenizer 的单个实例来完成吗?请提供有效的解决方案。

这是我的编码工作:

String str = "10 20 30 40 50";
StringTokenizer st = new StringTokenizer(str);
while(st.hasMoreTokens()){
    int i = Integer.parseInt(st.nextToken())*2;
    System.out.println(i);
}

我可以使用相同的实例' st '为了价值三倍?

编辑: 我知道它可以通过另一个数组或其他列表完成。但我想知道如何重复使用相同的StringTokenizer进行三倍重叠,就像我将值加倍一样。

2 个答案:

答案 0 :(得分:0)

我会编写一个函数,它接受一个字符串和一个int(作为乘数)并返回一个字符串。在函数内部,它根据空格解析字符串,然后将字符串转换为int数组。然后代码将ints数组乘以您传递给函数的int。毕竟,它会将int连接成一个空字符串,在它添加的每个int之后添加空格,以便在函数末尾返回该字符串。

作为一名新程序员,请尽可能训练自己不要使用第三方库。一开始可能看起来很难,但从长远来看它会得到回报!

答案 1 :(得分:0)

您可以完全避免使用StringBuilder,因为不鼓励使用它。以下是您可以根据需要使用/修改的版本。代码几乎是不言自明的:

    public static String operate(int[] intArrNumbers,int multiplier ){
        StringBuilder finalStr = new StringBuilder();
        for(int i: intArrNumbers){
            finalStr.append(i*multiplier);
            finalStr.append("\n");
        }
        return finalStr.toString();
    }


    public static void main(String[] args){
        String str = "10 20 30 40 50";
        String[] strArrNumbers = str.split(" ");
        int size = strArrNumbers.length;
        int[] intArrNumbers = new int[size];
        int index=0;
        for(String z:strArrNumbers){
            intArrNumbers[index]= Integer.parseInt(z);
            index++;
        }
        int multiplier = 3;

        String result = operate(intArrNumbers,multiplier);
        System.out.println(result);


}