首页 > 试题广场 >

收件人列表

[编程题]收件人列表
  • 热度指数:4534 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
NowCoder每天要给许多客户写电子邮件。正如你所知,如果一封邮件中包含多个收件人,收件人姓名之间会用一个逗号和空格隔开;如果收件人姓名也包含空格或逗号,则姓名需要用双引号包含。
现在给你一组收件人姓名,请你帮他生成相应的收件人列表。

输入描述:
输入包含多组数据。

每组数据的第一行是一个整数n (1≤n≤128),表示后面有n个姓名。

紧接着n行,每一行包含一个收件人的姓名。姓名长度不超过16个字符。


输出描述:
对应每一组输入,输出一行收件人列表。
示例1

输入

3
Joe
Quan, William
Letendre,Bruce
2
Leon
Kewell

输出

Joe, "Quan, William", "Letendre,Bruce"
Leon, Kewell
import java.util.Scanner;

/*
 * 收件人列表
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String strNum = sc.nextLine();
            int num = Integer.parseInt(strNum);
            for (int i = 0; i < num; i++) {
                String str = sc.nextLine();
                if (i == num - 1) {
                    if (str.contains(",") || str.contains(" ")) {
                        System.out.print("\"" + str + "\"");
                    } else {
                        System.out.print(str+" ");
                    }
                } else {
                    if (str.contains(",") || str.contains(" ")) {
                        System.out.print("\"" + str + "\"" + ", ");
                    } else {
                        System.out.print(str + ", ");
                    }
                }
            }
            System.out.println();
           
        }
    }
}

发表于 2023-04-13 16:28:24 回复(0)
// write your code here
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNextLine()){
            int n=sc.nextInt();
            for(int i=0;i<n;i++){
                String str=sc.nextLine();
                if(str.contains(" ")||str.contains(",")){
                    if(i==n-1){
                        System.out.print("\""+str+"\"");
                    }
                    else{
                        System.out.print("\""+str+"\"");
                        System.out.print(", ");
                    }
                }
                else{
                    if(i==n-1){
                        System.out.print(str);
                    }
                    else{
                        System.out.print(str+", ");
                    }
                }
            }
            System.out.println();
        }
    }
}
请检查是否存在数组越界等非法访问情况
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Scanner.java:864)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at Main.main(Main.java:7)

求大佬指点这道题这种解法为什么报错
发表于 2022-06-03 00:10:13 回复(0)
两种方式存储修改后的名单(注意系统输入格式)
1. 用String 字符串存储
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            int n = Integer.parseInt(sc.nextLine());
            String result = "";
            for (int i = 0; i < n; i++) {
                String cur = sc.nextLine();
                if (cur.contains(",") || cur.contains(" ")) cur = "\"" + cur + "\"";
                if(i != n-1) {
                    result += cur;
                    result += ", ";
                }else result += cur;
            }
            System.out.println(result);
        }
    }
}
2. 用数组存储(注意输出格式)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            int n = Integer.parseInt(in.nextLine());
            String[] arr = new String[n];
            for (int i = 0; i < n; i++) {
                String cur = in.nextLine();
                if (cur.contains(",") || cur.contains(" ")) cur = "\"" + cur + "\"";
                arr[i] = cur;
            }
            for (int i = 0; i < n; i++) {
                if(i == n-1) System.out.println(arr[i]);
                else System.out.print(arr[i] + ", ");
            }
        }
    }
}



发表于 2022-06-02 17:39:47 回复(0)
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
    int n = in.nextInt();
    in.nextLine();//换行操作
    List<String> list = new ArrayList<>();    

    for(int i = 0;i < n;i++){
        String arr = in.nextLine();
        if(arr.contains(",") || arr.contains(" ")){
            list.add("\""+arr+"\"");
        }else{
            list.add(arr);
        }
    }

    for(int i = 0;i < n - 1;i++){
        System.out.print(list.get(i) + ", ");
    }
        System.out.println(list.get(n - 1));

        }
    }


方法二:
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            sc.nextLine();
            for(int i = 0;i < n;i++){
                String s = sc.nextLine();
                if(s.contains(" ") || s.contains(",")){
                    System.out.print("\"" + s + "\"");
                }else{
                      System.out.print( s );
                }
                if(i == n - 1){
                    System.out.println();
                }else{
                    System.out.print( ", " );
                }
            }
        }
    }
}



编辑于 2022-05-18 16:27:52 回复(0)
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            // 不用nextInt是因为它和nextLine连用会出问题
            int n = Integer.parseInt(sc.nextLine());
            String[] s = new String[n];
            for(int i = 0; i < n; i++){
                s[i] = sc.nextLine();
                if(s[i].contains(" ") || s[i].contains(",")){
                    s[i] = "\"" + s[i] + "\"";
                }
            }
            for(int i = 0; i < n; i++){
                if(i == n-1){
                    System.out.println(s[i]);
                }
                else{
                    System.out.print(s[i]+", ");
                }
            }
        }
    }
}

发表于 2021-07-21 21:48:32 回复(0)
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNextLine()) {
			int n = Integer.parseInt(sc.nextLine());
			String[] arr = new String[n];
			for (int i = 0; i < n; i ++ ) {
				String s = sc.nextLine();
				if(s.contains(",") || s.contains(" ")) s = "\"" + s + "\"";
				arr[i] = s;
			}
			for (int i = 0; i < n; i ++ ) {
				if(i == n - 1) System.out.println(arr[i]);
				else System.out.print(arr[i] + ", ");
			}
		}
	}
}

发表于 2016-10-14 00:43:41 回复(0)