非火灾if语句

时间:2017-10-22 14:59:13

标签: java string substring indentation

如何修改此程序只打印三行,意图第二和第三开始空格。我的if语句似乎不起作用

package com.TnationChallange;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        for (String part : getParts("screen space to display information", 7, 3)) {
            System.out.println(part);
        }
    }
    private static List<String> getParts(String string, int partitionSize, int maxLine) {
        List<String> parts = new ArrayList<String>();
        int len = string.length();
        for (int i = 0; i < len; i += partitionSize) {
            parts.add(string.substring(i, Math.min(len, i + partitionSize)));
            maxLine++;
            if (maxLine == 3) {
                break;
            }
        }
        return parts;
    }
}

2 个答案:

答案 0 :(得分:1)

您传递给getParts方法的第三个参数是3,因为您在maxLine++之前调用if (maxLine == 3)该条件永远不会是true

你应该使用这样的东西:

....
maxLines--;
if(maxLines == 0){
   ....
}
.....

答案 1 :(得分:0)

您需要一个不同的变量来计算行数。

package com.TnationChallange;    
import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String[] args) {

        for (String part : getParts("screen space to display information", 7, 3)) {
            System.out.println(part);
        }
    }
    private static List<String> getParts(String string, int partitionSize, int maxLine) {
        List<String> parts = new ArrayList<String>();
        int len = string.length();
        int count = 0;
        for (int i = 0; i < len; i += partitionSize) {
            parts.add(string.substring(i, Math.min(len, i + partitionSize)));
            count++;
            if (maxLine == count) {
                break;
            }
        }
        return parts;
    }
}

这假设您希望通过maxLine限制结果。