解题思路:
将字符串拼接
如果字符串中存在","
或者" "
, 那么先添加"
再添加该字符串
再添加"
同时再判断是否遍历到了最后一个字符串, 如果不是, 再添加","
注:
输入n
时需要从nextLine()
转为int
如果直接写成int n = sc.nextInt();
会影响名字的读取(即不会按行读取名字字符串)
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = Integer.parseInt(sc.nextLine());
String[] str = new String[n];
for(int i = 0; i < n; i++){
str[i] = sc.nextLine();
}
System.out.println(Name(str));
}
}
public static String Name(String[] str1){
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str1.length; i++){
if(str1[i].contains(",") || str1[i].contains(" ")){
sb.append("\"");
sb.append(str1[i]);
sb.append("\"");
if(i != str1.length - 1){
sb.append(",");
}
}else{
sb.append(str1[i]);
if(i != str1.length - 1){
sb.append(",");
}
}
}
return sb.toString();
}
}
上述写法报错如下
仔细观察发现, 名字之间缺少空格
正确代码如下
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = Integer.parseInt(sc.nextLine());
String[] str = new String[n];
for(int i = 0; i < n; i++){
str[i] = sc.nextLine();
}
System.out.println(Name(str));
}
}
public static String Name(String[] str1){
StringBuilder sb = new StringBuilder();
for(int i = 0; i < str1.length; i++){
if(str1[i].contains(",") || str1[i].contains(" ")){
sb.append("\"");
sb.append(str1[i]);
sb.append("\"");
if(i != str1.length - 1){
sb.append(",");
sb.append(" ");
}
}else{
sb.append(str1[i]);
if(i != str1.length - 1){
sb.append(",");
sb.append(" ");
}
}
}
return sb.toString();
}
}