[英]I'm curious how i would grab a char that is the smallest/biggest out of the rest in said string without using ARRAYS
[英]How would I print out a string of arrays without the last comma?
for (String userName : studentEnrollments.keySet()) {
System.out.println("Student: " + userName);
ArrayList<String> courses = studentEnrollments.get(userName);
String courseMessage = "Courses: ";
for (String singleCourse : courses) {
courseMessage += singleCourse + ", ";
System.out.println(courseMessage);
}
}
在for循环之后,它会打印出学生正在修读的每门课程。 用逗号将字符串打印出来而末尾没有逗号的正确方法是什么?
例如:AC130,AC140,AC150,到AC130,AC140,AC150
与Iterator一起使用一会儿,而不是for循环,然后仅当hasNext()返回true时才添加昏迷。
String courseMessage = "Courses: ";
Iterator<String> c = studentEnrollments.get(userName).iterator();
while (c.hasNext()) {
courseMessage += c.next();
if (c.hasNext()) {
courseMessage += ",";
}
}
请注意,在Java 8中,您可以使用StringJoiner
:
String commaSeparatedCourses = courses.stream().collect(Collectors.joining(", "));
这是另一种方法:
此方法可以解决问题:您可以在除第一个元素之外的每个元素之前添加一个逗号,而不是在最后一个元素之后添加一个逗号。
这是一个实现
String separator = "";
for (String singleCourse : courses) {
courseMessage += separator + singleCourse;
System.out.println(courseMessage);
separator = ",";
}
如果您使用的是Java 8,则可以使用StringJoiner
StringJoiner joiner = new StringJoiner(", ");
for (String singleCourse : courses) {
joiner.add(singleCourse);
}
System.out.println(joiner.toString());
否则,您可以只在字符串前面添加,
而不是附加它。
String courseMessage = "Courses: " + courses.get(0);
for (int i = 1; i<courses.size();++i) {
courseMessage += ", " + courses.get(i);
}
使用StringBuilder:
for (String userName : studentEnrollments.keySet()) {
System.out.println("Student: " + userName);
ArrayList<String> courses = studentEnrollments.get(userName);
StringBuilder sb = new StringBuilder();
for (String singleCourse : courses) {
if(sb.length()>0){
sb.append(", ");
}
sb.append(singleCourse);
}
System.out.println(sb.insert(0, "Courses: ").toString());
}
改用StringBuilder
for (String userName : studentEnrollments.keySet()) {
System.out.println("Student: " + userName);
ArrayList<String> courses = studentEnrollments.get(userName);
StringBuilder courseMessage = "Courses: ";
for (String singleCourse : courses) {
sb.append(singleCourse).append(", ");
}
if (sb.length() > 2)
sb.setLength(sd.length() -2);
String courseMessage = sb.toString();
System.out.println(courseMessage);
}
甚至与StringUtils更好(来自apache-common)
for (String userName : studentEnrollments.keySet()) {
System.out.println("Student: " + userName);
ArrayList<String> courses = studentEnrollments.get(userName);
String courseMessage = sb.toString();
System.out.println(StringUtils.join(courses, ", ");
}
对于Java 8之前的解决方案,您也可以看看此片段作为起点
String[] courses ={ "AC130", "AC140", "AC150" };
for (int i = 0; i < courses.length - 1; i++) {
System.out.append(courses[i]).append(", ");
}
System.out.println(courses[courses.length-1]);
简短说明:对于除最后一个元素以外的所有元素,它只打印“ element” +“,”,对于最后一个元素它仅打印“ element”。 您需要确保自己不会处理空数组。
使用string.replaceAll(", $", "")
,如下所示:
for (String userName : studentEnrollments.keySet()) {
System.out.println("Student: " + userName);
ArrayList<String> courses = studentEnrollments.get(userName);
String courseMessage = "Courses: ";
for (String singleCourse : courses) {
courseMessage += singleCourse + ", ";
}
System.out.println(courseMessage.replaceAll(", $", ""));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.