[英]Java sorting array with strings
嘿,我有这个项目,程序按降序显示团队分数,但问题是我无法切换团队名称,因此它们可以按顺序排列,因为团队名称数组是一个字符串。
for(int i = 0;i<tabPTS.length;i++){ // tabEquipe is the array containing the team names.
for (int j = i+1; j<tabPTS.length;j++){
if(tabPTS[i]<tabPTS[j]){
temp = tabPTS[i];
tabPTS[i] = tabPTS[j];
tabPTS[j] = temp;
}
}
}
System.out.println("Equipes: ");
System.out.println();
System.out.print("\t" + "PJ");
System.out.print("\t" + "V");
System.out.print("\t" + "D");
System.out.print("\t" + "PTS");
System.out.println();
for(int i = 0;i<tabPTS.length;i++){
int pos = i;
System.out.println(tabEquipe[i] + "\t" + tabPJ[i] + "\t"
+ tabVict[i] + "\t" + tabDef[i] + "\t" + tabPTS[i]);
}
如果我正确理解了这个问题,您希望 output 团队名称和他们的分数按照他们的分数排序。 解决此问题的多种方法:
1) 尝试定义一个类型来保存团队名称和他们的分数,然后根据他们的分数对这些对象的数组进行排序。
2) 如果您必须将分数和球队名称分开 arrays,请在选择排序算法中不断切换球队名称数组中的值和分数数组。
对Java中的String数组进行排序,需要将数组的每个元素与所有剩余元素进行比较,如果结果大于0,则交换它们。
这样做的一种解决方案是,您需要使用两个循环(嵌套),其中内循环以 i+1 开始(其中 i 是外循环的变量)以避免比较重复。
这是示例
import java.util.Arrays;
public class StringArrayInOrder {
public static void main(String args[]) {
String[] myArray = {"JavaFX", "HBase", "OpenCV", "Java", "Hadoop", "Neo4j"};
int size = myArray.length;
for(int i = 0; i<size-1; i++) {
for (int j = i+1; j<myArray.length; j++) {
if(myArray[i].compareTo(myArray[j])>0) {
String temp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = temp;
}
}
}
System.out.println(Arrays.toString(myArray));
}
}
这是上面代码的output
[HBase, Hadoop, Java, JavaFX, Neo4j, OpenCV]
您还可以使用Arrays class 的sort()
方法对数组进行排序。
像这样
String[] myArray = {"JavaFX", "HBase", "OpenCV", "Java", "Hadoop","Neo4j"};
Arrays.sort(myArray);
System.out.println(Arrays.toString(myArray));
您可以像这样按降序对arr[]
进行排序
String arr[] = {"p","q","c"};
// Sorts arr[] in ascending order
Arrays.sort(arr);
System.out.printf("Modified arr[] : \n%s\n\n",
Arrays.toString(arr));
// Sorts arr[] in descending order
Arrays.sort(arr, Collections.reverseOrder());
和 output
Modified arr[] :
Modified arr[] :
[q, p, c]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.