有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何格式化输出?

(在Java中)编写一个程序,该程序接受名称,并将其格式化如下:如果输入为: 约翰·安东尼·布朗

那么输出必须是: 布朗,约翰·A

这是我的

    int mn;
    String input3;
    int fn;
    int ln;
    String firstName;
    String lastName;
    String middleName;
    Scanner scnr = new Scanner(System.in);
    String input = scnr.nextLine();
    fn = input.indexOf(" ");
    firstName = input.substring(0, fn);
    middleName = input.substring(fn+1, input.length());
    mn = middleName.indexOf(" ");
    lastName = input.substring(mn+1, input.length());
    
    System.out.println(lastName + ", " + mn + " " + firstName + ".");
}

我不断尝试不同的东西,得到奇怪的输出,比如“ry A Lee,1 Mary”输入“嫁给李”

这个话题在我的课堂上从未涉及过,我很困惑


共 (3) 个答案

  1. # 1 楼答案

     String firstName,lastName;
       char middleName; 
       Scanner sc = new Scanner(System.in);
        System.out.println("Name: ");
        firstName = sc.next();
        System.out.println("Surname: ");
        lastName = sc.next();
        System.out.println("Middle Name: ");
        middleName = sc.next().charAt(0);
        System.out.printf("%s, %s %s",lastName,firstName,middleName); //formats the output
    

    我把中间的名字做成了一个字符,因为在显示时使用了第一个字母

  2. # 2 楼答案

    因为这是家庭作业,我将给出代码片段:

    首先,使用split()将文本拆分为单词:

    String[] names = input.split(" ");
    

    然后建立你的结果:

    String result = names[2] + ", " + names[0] + ", " + names[1].charAt(0) + ".";
    

    有更优雅的方法,但这种方法可以说是最容易理解的

    你可以通过迎合不同数量的名字而变得更花哨

  3. # 3 楼答案

    试试这样:

    String[] items = input.split(" ");
    
    //if there are three item in items, then it is the pattern you mentioned
    if (items.length == 3) {
        System.out.println(items[2] + "," + items[0] + items[1].charAt(0) + ".");
    }