第三行是 (ab,c),(d,e,f),(g,h,i) 
没有规律吧

解决方案 »

  1.   

    第三行应该是(a,b,c),(d,e,f),(g,h,i),......这其实就是找规律:
    已知数组char[] chArr = {a,b,...,i};
    第一行打印的时候,()内只打印1个字母,第二行打印2个,以此类推;
    通用规律就是第i(i从0开始)行打印(i+1)个字母(且用逗号分隔),且不超过chArr的字母个数限制。LZ好好想想吧。
      

  2.   

    第三行应该是(a,b,c),(d,e,f),(g,h,i),......打入时漏了,我也是和楼上一样理解的,只是自己实现不了:-I
      

  3.   

    写了一个通用的方法,可以指定输出的字符范围,比如指定 9 就是说输出 'a' 至 'a' + 9 - 1public static String output(int charRange) {

    StringBuilder sb = new StringBuilder();

    for (int i = 1; i <= charRange; i++) {

    for (char c = 'a'; c < 'a' + charRange; c++) {
    if ((c - 'a') % i == 0) {
    sb.append("(");
    }

    sb.append(c);

    if ((c + 1 - 'a') % i == 0 && c != ('a' + charRange - 1)) {
    sb.append("),");
    }
    if (c == ('a' + charRange - 1)) {
    sb.append(")");
    }
    }
    sb.append("\n");

    }
    return sb.toString();
    }
    测试 main 函数public static void main(String[] args) {

    System.out.println(output(9));

    }
      

  4.   

    这个是输出(a),(b),(c),(d),(e),(f),(g),(h),(i)
    (ab),(cd),(ef),(gh),(i)
    (abc),(def),(ghi)
    (abcd),(efgh),(i)
    (abcde),(fghi)
    (abcdef),(ghi)
    (abcdefg),(hi)
    (abcdefgh),(i)
    (abcdefghi)
      

  5.   

    上面的代码里使用了 char 类型,虽然说在 Java 里最好不要直接使用 char 类型,但你这个问题只涉及ASCII中的英文字符,所以不会出现什么问题
      

  6.   

    自己写了个 逗号问题纠结了好久public static void main(String[] args) {
    char[] arr = {'a','b','c','d','e','f','g','h','i'};
    int length = arr.length;
    int len;
    int m = 0;
    int k = 0; 
    int n;
    for(int i=0; i<length; i++) {
    if(length%(i+1) == 0) {
    len = length/(i+1);
    } else {
    len = length/(i+1) + 1;
    }

    for(int j=m=0; j<len; j++,m=m+i+1) {
    n = 0;
    System.out.print("(");
    for(k=m ; k<m+i+1; k++) {
    if(k == length) {
    break;
    }
    System.out.print(arr[k]);
    if(k != length-1) {
    if(n < i) {
    System.out.print(",");
    n++;
    }
    }
    }
    System.out.print(")");
    if(j != len-1) {
    System.out.print(",");
    }
    }

    System.out.println();
    }
    }
    输出:(a),(b),(c),(d),(e),(f),(g),(h),(i)
    (a,b),(c,d),(e,f),(g,h),(i)
    (a,b,c),(d,e,f),(g,h,i)
    (a,b,c,d),(e,f,g,h),(i)
    (a,b,c,d,e),(f,g,h,i)
    (a,b,c,d,e,f),(g,h,i)
    (a,b,c,d,e,f,g),(h,i)
    (a,b,c,d,e,f,g,h),(i)
    (a,b,c,d,e,f,g,h,i)
      

  7.   


    public class Test1 { public static void main(String[] args) {
    output('a', 'i'); } private static void output(char start, char end) {
    int count = end - start + 1;
    int add = 1;
    for (int i = 0; i < count; ++i, ++add) {
    for (int j = 0; j < count; j += add) {
    System.out.print("(");
    for (int k = j; k < Math.min(j + add, count); ++k) {
    System.out.print((char) (start + k));
    }
    System.out.print(")");
    if(j + add < count) {
    System.out.print(",");
    }
    }
    System.out.println();
    }
    }
    }
      

  8.   

    public static void main(String[] args) {
    String str = "";
    int start = 0;
    int end = 0;
    for (int j = 0; j < 9; j++) {
    start = 0;
    end = j + 1;
    for (int i = 0; i < 9; i++) {
    String s = "abcdefghi";
    if (end > s.length()) {
    if (start == Math.min(s.length(), end))
    break;
    str += "(";
    str += s.substring(start, Math.min(s.length(), end))
    + (")");
    break;
    } else {
    str += "(";
    str += s.substring(start, end) + (")");
    }
    start = end;
    end = end + 1 + j;
    }
    str += "\n";
    }
    System.out.println(str);
    }
      

  9.   

    楼上都分享了这么多了,我也给楼主分享一版吧:
    public class TestString { public static void main(String[] args) {
    String value = "abcdefghi";
    printfStr(value);
    } /**
     * 打印字符串
     * 
     * @param str
     */
    private static void printfStr(String str) {
    int length = str.length();
    StringBuilder temp = new StringBuilder(); for (int i = 1; i <= length; i++) { // 间隔是i
    for (int j = 0; j < length; j += i) { // 求截取子字符串的尾下标
    int max = ((j + i >= length) ? length : (j + i));
    temp.append(organizeStr(str.substring(j, max)));
    } // 在两个括号间插入逗号
    System.out.println(temp.toString().replace(")(", "),("));
    temp.delete(0, temp.length()); // 清空容器
    }
    } /**
     * 组织字符串,如abc转换为a,b,c
     * 
     * @param str
     *            要转换的字符串
     * @return 返回转换后的结果
     */
    private static String organizeStr(String str) {
    StringBuilder value = null; // 两个长度以上时才添加逗号
    if (str.length() > 1) {
    value = new StringBuilder(str);
    value.insert(1, ","); /*
     * 判断是否是最后一个字符前的逗号
     * 如:a,b,c:length = 5,lastIndexOf(",") = 3,退出循环
     */
    while (value.lastIndexOf(",") < value.length() - 2) {
    int insertIndex = value.lastIndexOf(",") + 2;
    value.insert(insertIndex, ",");
    }
    }
    return "(" + (value == null ? str : value.toString()) + ")";
    }
    }
      

  10.   


    public static void main(String[] args) {
            char[] arr = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' };
     
            for (int i = 1; i <= 9; i++) {
                System.out.print("(");
                for (int j = 1; j <= 9; j++) {
                    System.out.print(arr[j - 1]);
                    if (j % i == 0 && j!=9) {
                        System.out.print("),(");
                    }else if(j!=9){
                        System.out.print(",");
                    }
                }
                System.out.println(")");
            }
        }
      

  11.   

    各位都是大神啊,五花八门的都有,结果打印出来就知道了,正所谓java的思维是活的在各位身上验证了#^_^#
      

  12.   

    system.out.println("(a),(b),(c),(d),(e),(f),(g),(h),(i)");
    ...
      

  13.   


    public static void main(String[] args) {
    char[] chars = {'a','b','c','d','e','f','g','h','i'};

    StringBuffer sb = new StringBuffer();
    for(int i=1;i<=chars.length;i++){
    sb.append(getFormatString(chars,i)).append("\n");
    }
    System.out.println(sb);
    } private static String getFormatString(char[] chars, int index) {
    StringBuffer sb = new StringBuffer(); for(int i=1;i<=chars.length;i+=index){
    sb.append("(");
    for(int j=i;j<i+index;j++){
    if(j<=chars.length){
    sb.append(chars[j-1]).append(",");
    }
    }
    if(sb.toString().endsWith(",")){
    sb.deleteCharAt(sb.toString().lastIndexOf(","));
    }
    sb.append("),");
    }

    String str = sb.toString();
    return str.substring(0, str.lastIndexOf(','));
    }
      

  14.   

    可能先写的有点乱
    public class Test1 {
    public static void main(String[] args) {
    String str = "abcdefghi";

    String strTemp = "";
    for(int line=1;line <=str.length();line++){
    int start = 0;
    for(int i=1;i<=((str.length()%line==0)? str.length()/line : str.length()/line+1);i++){

    if((start+line)<=str.length() ){
    strTemp = str.substring(start,(start+line));

    }else{
    strTemp = str.substring(start,str.length());
    } if(i!=((str.length()%line==0)? str.length()/line : str.length()/line+1)){
    System.out.print("(" + strTemp + ")," );
    }else{
    System.out.print("(" + strTemp + ")" );
    }

    start += line;
    }
    System.out.println();
    }

    }}
      

  15.   

    这个感觉使用brute force的方式写出来,不清晰。建议将数据与显示分离。
    下面使用其它语言给个例子,它先求出数据,再显示数据。这个语言写这样的程序,不需要循环的:
    #lang racket
    ;;http://bbs.csdn.net/topics/390642252
    (define (splitList aList size result)
      (cond [
             (>= size (length aList) ) (reverse (cons aList result ))]
            [else
             (splitList 
              (list-tail aList size) size 
              (cons (take aList size) result))]));; Tests
    ;(splitList l1 5 empty);'((a b c d e))
    ;(splitList l1 4 empty);''((a b c d) (e))
    ;(splitList l1 3 empty);'((a b c) (d e))
    ;(splitList l1 2 empty);'((a b) (c d) (e))
    ;(splitList l1 1 empty);'((a) (b) (c) (d) (e))(define (makeSubLists aList size result)
      (cond [(= size 0) result]
            [else
             (makeSubLists 
              aList (- size 1)
              (cons (splitList aList size empty) result)
              )]))
    (define (showMultiItemsList aList)
      (display "(")
      (map (lambda (item)
             (display item)
             (display ","))
           (reverse (rest (reverse aList))))
      (display (first (reverse aList)))
      (display ")"));; Tests
    ;(showMultiItemsList '(a b c));(a,b,c)(define (showResult aList)
      (map (lambda (item)
             (cond [(> (length item) 1)
                    (showMultiItemsList item)
                    ]
                   [else
                    (display item)
                    ])
             (display ",")
             ) (reverse (rest (reverse aList))))
      (cond [(> (length (first (reverse aList))) 1)
             (showMultiItemsList (first (reverse aList)))]
            [else
             (display (first (reverse aList)))]
            )
      (displayln "")
      );; Tests
    (define aList '(a b c d e f g h i))
    (define result (makeSubLists aList (length aList) empty))
    (define null (map showResult result))
    ;;result:
    #|
    (a),(b),(c),(d),(e),(f),(g),(h),(i)
    (a,b),(c,d),(e,f),(g,h),(i)
    (a,b,c),(d,e,f),(g,h,i)
    (a,b,c,d),(e,f,g,h),(i)
    (a,b,c,d,e),(f,g,h,i)
    (a,b,c,d,e,f),(g,h,i)
    (a,b,c,d,e,f,g),(h,i)
    (a,b,c,d,e,f,g,h),(i)
    (a,b,c,d,e,f,g,h,i)
    |#
      

  16.   

    我也献丑了,思路是向“a,b,c,d,e,f,g,h,i”里加括号public static void main(String args[]){
    String string = "a,b,c,d,e,f,g,h,i";
    int size = (string.length() - 1) / 2 + 1;
    for(int i = 1; i <= 9; i++){
    StringBuffer buffer = new StringBuffer(string);
    int len = (size % i == 0) ? size / i : size / i + 1;
    int index = 0;
    for(int j = 0; j < len - 1; j++){
    buffer.insert( (2 * i) * j + index++, '(');
    buffer.insert((2 * i) * j + index++ + (2 * i - 1), ')');
    }

    buffer.insert((2 * i) * (len - 1) + index++, '(');
    buffer.append(")");
    System.out.println(buffer);
    }
    }
      

  17.   

    重发一遍public static void main(String args[]){
    String string = "a,b,c,d,e,f,g,h,i";
    int size = (string.length() - 1) / 2 + 1;
    for(int i = 1; i <= 9; i++){
    StringBuffer buffer = new StringBuffer(string);
    int len = (size % i == 0) ? size / i : size / i + 1;
    int index = 0;
    for(int j = 0; j < len - 1; j++){
    buffer.insert( (2 * i) * j + index++, '(');
    buffer.insert((2 * i) * j + index++ + (2 * i - 1), ')');
    }

    buffer.insert((2 * i) * (len - 1) + index++, '(');
    buffer.append(")");
    System.out.println(buffer);
    }
    }