二重for文に入って処理をしません
HashMap<String, Integer> course
Stringはコース名、Integerは回数カウント
ArrayList<String> listCourse
Stringは目的のコース名
Map.Entry<String, Integer>も使用
public static void sortDisplay(){//降順に画面表示する
int maxCount = 0;
for(Object obj : course.entrySet()){
Map.Entry<String, Integer> entry = (Map.Entry) obj;
if(maxCount < entry.getValue()){
maxCount = entry.getValue();//最大回数へ代入
}
}
System.out.println(listCourse.get(0));//ここは表示される
for(int i = maxCount; i > 0; i--)//修正しましたが、まだ二重for文を処理しません・・・ここが問題の二重for文です /*for(int i = maxCount; i < 0; i--){//最大回数から回して、表示する・・・ここが問題の二重for*/ for(Object obj : course.entrySet()){ Map.Entry<String, Integer> entry = (Map.Entry) obj; if(i == entry.getValue()){//iと回数カウントが等しい時、キー:コースと値:回数カウントを表示する System.out.println(entry.getKey() + ":" + entry.getValue()); } } } System.out.println("表示一覧を終了します");//ここは表示される }
この二重for文に入って処理をしません
他のソースは以下
import java.util.Scanner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class CourseKeiba {
static ArrayList<String> listCourse;
static HashMap<String, Integer> course;
public static void main(String[] args){ screenInput(); sortDisplay(); } public static void screenInput(){//画面から入力する int count = 0;//回数カウント、初期値0 System.out.println("対象コースを入力して下さい"); String target = new Scanner(System.in).nextLine(); listCourse = new ArrayList<String>(); listCourse.add(target); while(true){ System.out.println("第1コースデータを入力して下さい"); String firstCourse = new Scanner(System.in).nextLine(); course = new HashMap<String, Integer>(); if(firstCourse.equals("9999")){//無限ループを抜ける入力"9999"があったら System.out.println("入力を終了します"); break;//無限ループを抜ける } if(course.isEmpty() == true){ count = 1;//カウントは1にする }else{ for(String key : course.keySet()){ if(key.equals(firstCourse)){ count++;//同じコース名があったら、回数カウントと+1する } } } course.put(firstCourse, count); count = 1;//HashMapにデータを置いたら、回数カウントは1にする System.out.println("第2コースデータを入力して下さい"); String secondCourse = new Scanner(System.in).nextLine(); for(String key : course.keySet()){ if(key.equals(secondCourse)){ count++;//同じコース名があったら、回数カウントを+1する } } course.put(secondCourse, count); count = 1;//HashMapにデータを置いたら回数カウントは1に戻す } }
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。