![](/img/trans.png)
[英]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.