英文:
Is there a way to simplify if..else statements in Java
问题
这是检查体育项目ID并根据体育项目设置图像的if语句。但我想知道是否有一种更简单和更短的方法来实现这个。感谢您的时间和答案!
if (sport.equals("1")) {
sportImg.setImageResource(R.drawable.fudbal);
} else if (sport.equals("2")) {
sportImg.setImageResource(R.drawable.hokej);
} else if (sport.equals("3")) {
sportImg.setImageResource(R.drawable.basketball);
} else if (sport.equals("4")) {
sportImg.setImageResource(R.drawable.tenis);
} else if (sport.equals("5")) {
// sportImg.setImageResource(R.drawable.handball);
} else if (sport.equals("6")) {
// sportImg.setImageResource(R.drawable.mlb);
} else if (sport.equals("7")) {
sportImg.setImageResource(R.drawable.odbojka);
} else if (sport.equals("8")) {
sportImg.setImageResource(R.drawable.ragbi);
} else if (sport.equals("9")) {
// sportImg.setImageResource(R.drawable.formula);
} else if (sport.equals("10")) {
// sportImg.setImageResource(R.drawable.moto);
} else if (sport.equals("11")) {
sportImg.setImageResource(R.drawable.vaterpolo);
} else if (sport.equals("12")) {
// sportImg.setImageResource(R.drawable.boks);
} else if (sport.equals("13")) {
sportImg.setImageResource(R.drawable.futsal);
} else if (sport.equals("14")) {
// sportImg.setImageResource(R.drawable.tenis);
} else {
sportImg.setImageAlpha(0);
}
英文:
I have this if statements that check the ID of a sport and set an Image according to the sport.
but I am curious if there is a more simple and shorter way to implement this.
Thank you for the time and answers!
if (sport.equals("1")) {
sportImg.setImageResource(R.drawable.fudbal);
} else if (sport.equals("2")) {
sportImg.setImageResource(R.drawable.hokej);
} else if (sport.equals("3")) {
sportImg.setImageResource(R.drawable.basketball);
} else if (sport.equals("4")) {
sportImg.setImageResource(R.drawable.tenis);
} else if (sport.equals("5")) {
// sportImg.setImageResource(R.drawable.handball);
} else if (sport.equals("6")) {
// sportImg.setImageResource(R.drawable.mlb);
} else if (sport.equals("7")) {
sportImg.setImageResource(R.drawable.odbojka);
} else if (sport.equals("8")) {
sportImg.setImageResource(R.drawable.ragbi);
} else if (sport.equals("9")) {
// sportImg.setImageResource(R.drawable.formula);
} else if (sport.equals("10")) {
// sportImg.setImageResource(R.drawable.moto);
} else if (sport.equals("11")) {
sportImg.setImageResource(R.drawable.vaterpolo);
} else if (sport.equals("12")) {
// sportImg.setImageResource(R.drawable.boks);
} else if (sport.equals("13")) {
sportImg.setImageResource(R.drawable.futsal);
} else if (sport.equals("14")) {
// sportImg.setImageResource(R.drawable.tenis);
} else {
sportImg.setImageAlpha(0);
}
答案1
得分: 1
在这种情况下,您可以使用Map<String, Integer>
来简化if..else
语句:
Map<String, Integer> mapImages = new HashMap<>();
mapImages.put("1", R.drawable.fudbal);
mapImages.put("2", R.drawable.hokej);
// mapImages.put(...
Integer imageId = mapImages.get(sport);
if (imageId != null) {
sportImg.setImageResource(imageId);
} else {
sportImg.setImageAlpha(0);
}
或者您可以使用Map<String, Runnable>
来为每个key
执行一些操作:
Map<String, Runnable> mapActions = new HashMap<>();
mapActions.put("1", () -> System.out.println("Action 1"));
mapActions.put("2", () -> System.out.println("Action 2"));
Runnable defaultAction = () -> System.out.println("Default action");
mapActions.getOrDefault("1", defaultAction).run(); // Action 1
mapActions.getOrDefault("2", defaultAction).run(); // Action 2
mapActions.getOrDefault("3", defaultAction).run(); // Default action
或者您可以在普通的Java switch语句中使用字符串:
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "工作周的开始";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "中间的一天";
break;
case "Friday":
typeOfDay = "工作周的结束";
break;
case "Saturday":
case "Sunday":
typeOfDay = "周末";
break;
default:
throw new Exception("无效的星期几: " + dayOfWeekArg);
}
英文:
In this case you can use Map<String, Integer>
to simplify if..else
statements:
Map<String, Integer> mapImages = new HashMap<>();
mapImages.put("1", R.drawable.fudbal);
mapImages.put("2", R.drawable.hokej);
// mapImages.put(...
Integer imageId = mapImages.get(sport);
if (imageId != null) {
sportImg.setImageResource(imageId);
} else {
sportImg.setImageAlpha(0);
}
Or you can use Map<String, Runnable>
to do some stuff for each key
:
Map<String, Runnable> mapActions = new HashMap<>();
mapActions.put("1", () -> System.out.println("Action 1"));
mapActions.put("2", () -> System.out.println("Action 2"));
Runnable defaultAction = () -> System.out.println("Default action");
mapActions.getOrDefault("1", defaultAction).run(); // Action 1
mapActions.getOrDefault("2", defaultAction).run(); // Action 2
mapActions.getOrDefault("3", defaultAction).run(); // Default action
Or you can use plain old Java strings in switch statements:
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
throw new Exception("Invalid day of the week: " + dayOfWeekArg);
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论