Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用*字符键入字符串?_Java_Oop_Char_Ascii_Ascii Art - Fatal编程技术网

Java 如何使用*字符键入字符串?

Java 如何使用*字符键入字符串?,java,oop,char,ascii,ascii-art,Java,Oop,Char,Ascii,Ascii Art,我被设置为只使用*字符打印一串输入字母БöБ。我的Java老师希望看到以下输出: 创建一个公共类字母并使用矩阵只编码两个字母很容易。但我面临的问题是制作整个字母表,这是一项额外的任务 也许还有另一种方法可以将输入字符串转换为*的图片?这是我的解决方案,可以将数字0到9转换为字符*,如您的示例: class JavaApplication57 { public static void main(String[] args) { Scanner sc = new Scann

我被设置为只使用*字符打印一串输入字母БöБ。我的Java老师希望看到以下输出:

创建一个公共类字母并使用矩阵只编码两个字母很容易。但我面临的问题是制作整个字母表,这是一项额外的任务


也许还有另一种方法可以将输入字符串转换为*的图片?

这是我的解决方案,可以将数字0到9转换为字符*,如您的示例:

class JavaApplication57 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        ArrayList<Letter> ar = new ArrayList<>();
        System.out.println("Please input string: ");
        String s = sc.next();
        for (char c : s.toCharArray()) {
            ar.add(JavaApplication57.convertToLetter(c));
        }
        for (int i = 0; i < 5; i++) {
            for (Letter l : ar) {
                System.out.print(l.getLine(i) + " ");
            }
            System.out.println("");
        }
    }

    static Letter convertToLetter(char ch) {
        String a = "****",
                b = "*  *",
                c = "   *",
                c2 = "*",
                d = "*   ",
                e = "* * ",
                f = "  * ";

        switch (ch) {
            case '0':
                return new Letter(a, b, b, b, a);
            case '1':
                return new Letter(c2, c2, c2, c2, c2);
            case '2':
                return new Letter(a, c, a, d, a);
            case '3':
                return new Letter(a, c, a, c, a);
            case '4':
                return new Letter(d, e, a, f, f);
            case '5':
                return new Letter(a, d, a, c, a);
            case '6':
                return new Letter(a, d, a, b, a);
            case '7':
                return new Letter(a, c, c, c, c);
            case '8':
                return new Letter(a, b, a, b, a);
            case '9':
                return new Letter(a, b, b, c, a);

        }
        return null;
    }

}

class Letter {

    private String line1, line2, line3, line4, line5;

    public Letter(String line1, String line2, String line3, String line4, String line5) {
        this.line1 = line1;
        this.line2 = line2;
        this.line3 = line3;
        this.line4 = line4;
        this.line5 = line5;
    }

    public String getLine(int i) {
        switch (i) {
            case 0:
                return line1;
            case 1:
                return line2;
            case 2:
                return line3;
            case 3:
                return line4;
            case 4:
                return line5;
            default:
                throw new AssertionError();
        }

    }
}

希望对您有所帮助

我会这样写:

import java.util.*;
import java.util.stream.*;

public class Alphabet {

    enum Letters {
        A(
                "   *   ",
                "  * *  ",
                " *   * ",
                "*     *",
                "*******",
                "*     *",
                "*     *"
        ),
        B(
                "*****  ",
                "*     *",
                "*     *",
                "*****  ",
                "*     *",
                "*     *",
                "*****  "
        ),
        C(
                " ***** ",
                "*     *",
                "*      ",
                "*      ",
                "*      ",
                "*     *",
                " ***** "
        ),
        None(
                "*******",
                "*******",
                "*******",
                "*******",
                "*******",
                "*******",
                "*******"
        );

        List<String> bitmap;

        Letters(String... bmp) {
            bitmap = Arrays.asList(bmp);
        }

        List<String> strings() {
            return bitmap;
        }
    }

    private final String SPACE = " ";
    private final String origin;
    private final Map<Character, Letters> bitmaps =
            Stream.of(Letters.values())
            .filter(l -> !l.equals(Letters.None))
            .collect(Collectors.toMap(
                    letters -> letters.toString().charAt(0),
                    letters -> letters
            ));

    public Alphabet(String abc) {
        this.origin = abc;
    }

    List<String> data() {
        List<List<String>> word = origin.chars()
                .mapToObj(c -> bitmaps.getOrDefault((char) c, Letters.None).strings())
                .collect(Collectors.toList());

        return IntStream.range(0, word.get(0).size())
                .mapToObj(idx -> word.stream().map(strings -> strings.get(idx)).collect(Collectors.joining(SPACE)))
                .collect(Collectors.toList());
    }

    void print() {
        List<String> bitmap = data();
        bitmap.forEach(System.out::println);
    }

    public static void main(String[] args) {
        new Alphabet(" ABCBA ").print();
    }

}
但是有一个想法。
您应该发明一些算法为每个角色创建位图。

欢迎使用堆栈溢出!你的问题是,这不是家庭作业完成服务。你的导师给你布置了作业,你首先需要自己做一些努力。如果你甚至不能开始,请向你的老师寻求帮助。将问题隔离到特定的编程片段中,然后搜索答案。如果您需要一门课程或教程,堆栈溢出不是合适的地方。我们祝你学习顺利。请参阅:。欢迎使用堆栈溢出!请仔细阅读,环顾四周,仔细阅读,特别是作业通常不是随意的;您的讲师、教程或课程将涵盖必要的主题,使您能够做到这一点。复习你的课程材料、课堂笔记等,并试一试。如果你遇到了一个特定的问题,彻底地研究它,如果你仍然困在那里,就发布你的代码和问题的描述。人们会很乐意帮助的。你应该为每个字母创建一个类,每个类/字母都有自己的循环,检查一下,为什么你认为除了为所有字母表创建一个字母之外,你还需要做其他事情?这会很费时,也不会比写两封信更能说明问题,但仅此而已。谢谢你的关注和所花的时间,LĐình Bảo Tín,不幸的是,我只是Java的初学者。你能解释一下你的代码是如何工作的吗?不是在注释中,而是在其他地方。是的,我不认为你是一个初学者。简单地说,您可以这样想:-class Letter:定义一个字母,-函数convertToLetter,用于将字符转换为字母,与您的示例相同-主:我有一个数组列表来包含所有的字母,然后我通过行打印字母。感谢您的时间和关注,我会检查它
*******    *    *****    *****  *****      *    *******
*******   * *   *     * *     * *     *   * *   *******
*******  *   *  *     * *       *     *  *   *  *******
******* *     * *****   *       *****   *     * *******
******* ******* *     * *       *     * ******* *******
******* *     * *     * *     * *     * *     * *******
******* *     * *****    *****  *****   *     * *******