如何逐行打印字母?

时间:2020-04-23 15:48:22

标签: java arrays alphabetical

我是一名帮助年轻学生学习编程的学生。其中一些已经被赋予了代码:

public class student {
    public static void main(String[] args) {
        ArrayList<char[]> data1 = new ArrayList<char[]>();
        ArrayList<char[]> data2 = createData();
        displayData(data2);
    }
    
    public static ArrayList<char[]> createData(){
        ArrayList<char[]> res = new ArrayList<char[]>();
        for(int index = 'A'; index<='Z'; index++) {
            char[] temp = new char[1+(index - 'A')];
            for(int count=0;count<temp.length;count++) {
                temp[count] = (char) ('A' + count);
            }
            res.add(temp);
        }
        return res;
    }
    
    public static void displayData(ArrayList<char[]> values) {
        
    }

这是为了打印出如下字母:

A

AB

ABC

等 但是我本人对displayData()方法中的内容有麻烦。

感谢您的帮助,谢谢!

6 个答案:

答案 0 :(得分:2)

您可以这样写:

public static void displayData(ArrayList<char[]> values) {
     for(char[] s : values){
        for(char c : s){
            System.out.print(c);
        }
        System.out.println();
    }
}

这应该给您想要的结果。

第一个高级功能是遍历ArrayList的每个条目。第二个for方法是遍历ArrayList项之一内的每个项。

答案 1 :(得分:2)

您可以单功能完成

<div class="ilustration">
      <h1 class="hover_effect">
        First Text <br />
        <span class="cor">Second Text</span>
      </h1>
</div>
    

答案 2 :(得分:1)

您可以将问题分为两部分:

第1部分-。打印字母:

private static void printAlphabet(char[] alphabet) {

        for(char c : alphabet) {
            System.out.print(c);
        }

}

第2部分-。使用最后一种方法,您可以打印所有字母,每次打印字母后都在末尾添加新行:

public static void displayData(ArrayList<char[]> values) {

         for (char[] alphabet: values) {
             printAlphabet(alphabet);
             System.out.println();
         }

}

奖金:您可以使用Stream和函数式编程:

public static void displayDataFunctional(ArrayList<char[]> values) {

         values.stream().forEach((alphabet) -> printAlphabet(alphabet));

}

建议:根据约定,Java类型名称通常以大写字母开头。

答案 3 :(得分:1)

一点点改进

使用列表:

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

public class Student {
    public static void main(String[] args) {
        List<String> lines = createList((int) 'A', (int) 'Z');
        print(lines);
    }

    public static List<String> createList(int min, int max) {
        List<String> lines = new ArrayList<>();
        for (int i = 0; i <= max - min; i++) {
            StringBuilder s = new StringBuilder();
            for (int j = min; j <= min + i; j++) {
                s.append(Character.toString((char) j));
            }
            lines.add(s.toString());
        }
        return lines;
    }

    public static void print(List<String> lines) {
        for (String line : lines)
            System.out.println(line);
    }
}

工作:https://www.jdoodle.com/embed/v0/21iL

无列表:

public class Student {
    public static void main(String[] args) {
        print((int) 'A', (int) 'Z');
    }

    public static void print(int min, int max) {
        for (int i = 0; i <= max - min; i++) {
            StringBuilder s = new StringBuilder();
            for (int j = min; j <= min + i; j++) {
                s.append(Character.toString((char) j));
            }
            System.out.println(s.toString());
        }
    }
}

工作:https://www.jdoodle.com/embed/v0/21iP

使用流:

import java.util.stream.IntStream;
import java.util.stream.Stream;

public class Student {
    public static void main(String[] args) {
        Stream<String> lines = createList((int) 'A', (int) 'Z');
        lines.forEach(System.out::println);
    }

    public static String row(int i, int min, int max) {
        StringBuilder s = new StringBuilder();
        IntStream.rangeClosed(min, min + i).forEach(j -> s.append(Character.toString((char) j)));
        return s.toString();
    }

    public static Stream<String> createList(int min, int max) {
        return IntStream.rangeClosed(0, max - min).mapToObj(i -> row(i, min, max));
    }
}

答案 4 :(得分:1)

完成它的一些方法如下:

  1. 使用增强的for循环:
public static void displayData(ArrayList<char[]> values) {
    for (char[] arr : values) {
        for (char ch : arr) {
            System.out.print(ch);
        }
        System.out.println();
    }
}
  1. 使用基于索引的for循环:
public static void displayData(ArrayList<char[]> values) {
    for (int i = 0; i < values.size(); i++) {
        for (int j = 0; j < values.get(i).length; j++) {
            System.out.print(values.get(i)[j]);
        }
        System.out.println();
    }
}
  1. 通过混合使用增强型for循环和基于索引的for循环:
public static void displayData(ArrayList<char[]> values) {
    for (char[] arr : values) {
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
        System.out.println();
    }
}

-或-

public static void displayData(ArrayList<char[]> values) {
    for (int i = 0; i < values.size(); i++) {
        for (char ch : values.get(i)) {
            System.out.print(ch);
        }
        System.out.println();
    }
}
  1. 使用for循环和String(char[])构造函数:
public static void displayData(ArrayList<char[]> values) {
    for (char[] arr : values) {
        System.out.println(new String(arr));
    }
}
  1. 通过使用Stream API:
public static void displayData(ArrayList<char[]> values) {
    values.stream().forEach(arr -> System.out.println(new String(arr)));
}

答案 5 :(得分:1)

一个较短的lambda

public void displayData(ArrayList<char[]> values) {
  values.stream().forEach( arr -> System.out.println( arr ) );
}