तो मेरे पास तारों की एक सरणी है

String [] scoreboard = {"AAA - 100", "BBB - 0", "CCC - 200"};

मैं सोच रहा था कि इन्हें कैसे ऑर्डर किया जाए ताकि सबसे बड़ी संख्या सबसे ऊपर हो और सबसे छोटी सबसे नीचे हो और फिर हर एक को स्क्रीन पर इस तरह प्रिंट करें:

CCC - 200
AAA - 100
BBB - 0

अब तक मेरे पास मेरा कोड इस तरह है:

float ty = height - height/1.25;
for (int i = 0; i < scoreboard.length; i++) {
  text(scoreboard[i], width/2, ty);
  ty += 60;
}

अभी यह उन्हें प्रिंट करता है ताकि वे स्ट्रिंग में हों, मैं उन्हें सॉर्ट करने के लिए संघर्ष कर रहा हूं। मैंने कई अलग-अलग तरीकों की कोशिश की है, लेकिन वह नहीं जो मैं चाहता हूं।

2
TheWelshManc 25 अगस्त 2018, 17:11
ओह, मैंने अभी पाया है कि आप सॉर्ट() और रिवर्स() को आरोही क्रम में क्रमबद्ध करके और इसे उलट कर जोड़ सकते हैं।
 – 
TheWelshManc
25 अगस्त 2018, 17:49

2 जवाब

आप sort() और reverse() को आरोही क्रम में क्रमबद्ध करके एक साथ जोड़ सकते हैं और इसे उलट सकते हैं।

String [] scoreboard = {"AAA - 100", "BBB - 0", "CCC - 200"};

scoreboard = reverse(sort(scoreboard));
1
Rabbid76 25 अगस्त 2018, 17:57
क्या यह उन्हें विपरीत-वर्णमाला क्रम में क्रमबद्ध नहीं करेगा? ओपी उन्हें स्ट्रिंग्स में संख्याओं द्वारा क्रमबद्ध करना चाहता है।
 – 
Kevin Workman
25 अगस्त 2018, 19:36
क्षमा करें, मुझे अभी एहसास हुआ कि आप ओपी थे। लेकिन किसी भी मामले में, क्या यह इसे सीसीसी, बीबीबी, एएए आदेश में नहीं छाँटेगा? और क्या आप उनके स्कोर के आधार पर CCC, AAA, BBB ऑर्डर नहीं चाहते हैं?
 – 
Kevin Workman
25 अगस्त 2018, 19:43
नहीं, मैंने इसे सभी प्रकार की स्ट्रिंग और संख्याओं के साथ आजमाया और यह अभी भी मेरे लिए संख्याओं को हल कर दिया।
 – 
TheWelshManc
25 अगस्त 2018, 20:15
इससे मुझे कोई मतलब नहीं है। जब मैं आपका कोड चलाता हूं और फिर println(scoreboard) को कॉल करता हूं, तो मैं देखता हूं कि यह सीसीसी, बीबीबी, एएए में क्रमबद्ध है।
 – 
Kevin Workman
25 अगस्त 2018, 22:44
अजीब, शायद इसलिए कि मैं प्रसंस्करण का उपयोग कर रहा हूं, आईडी
 – 
TheWelshManc
26 अगस्त 2018, 02:18

अगर मैं तुम होते, तो मैं एक वर्ग बनाने पर विचार करता, जिसमें एक name और एक score चर दोनों शामिल हों, बजाय इसके कि आप उन स्ट्रिंग्स के साथ काम करें जिन्हें आपको पार्स करना है।

किसी भी तरह से, चाहे आप String मान या कस्टम वर्ग का उपयोग कर रहे हों, मैं परिणामों के एक टन के लिए "जावा सॉर्ट सरणी" की तरह कुछ गूगल करूंगा।

मूल रूप से, आप Arrays.sort() फ़ंक्शन को कॉल करना चाहते हैं और एक कस्टम में पास करना चाहते हैं Comparator संख्या मान के आधार पर सॉर्टिंग करने के लिए, या तो आपकी कस्टम क्लास में या आपकी स्ट्रिंग में।

यहाँ एक बहुत ही बुनियादी उदाहरण है:

MyClass[] myArray = // create array
Arrays.sort(myArray, new Comparator<MyClass>(){
  public int compare(MyClass one, MyClass two){
    return two.score.compareTo(one.score);
  }
});

यह दृष्टिकोण मानता है कि आपके पास MyClass नामक एक वर्ग है जिसमें एक Integer score चर है। यदि आप String मानों से चिपके रहते हैं, तो आपके compare() फ़ंक्शन को String से संख्या को पार्स करना होगा और उनकी तुलना करना होगा।

0
Kevin Workman 25 अगस्त 2018, 19:42
यह एक तरह से भ्रमित करने वाला है। मुझे एक पूर्णांक और स्ट्रिंग के साथ एक वर्ग बनाने की आवश्यकता है? साथ ही उस वर्ग की एक नई सरणी?
 – 
TheWelshManc
26 अगस्त 2018, 02:36
आपके पास है नहीं है, लेकिन मैं यही करूंगा। अभी आप एक स्ट्रिंग में दो प्रकार के डेटा डाल रहे हैं, जो मैं कहूंगा कि एक एंटी- पैटर्न. लेकिन अगर आप एक स्ट्रिंग का उपयोग करना चाहते हैं, तो भी आपको उनके अंदर की संख्याओं के आधार पर उन्हें क्रमबद्ध करने के लिए एक कस्टम Comparator की आवश्यकता है।
 – 
Kevin Workman
26 अगस्त 2018, 02:40
मुझे एक टेक्स्ट फ़ाइल से स्कोर की स्ट्रिंग मिलती है जो प्रत्येक गेम के बाद सहेजती है, इसलिए मेरे पास एक सरणी है जो फ़ाइल से लोड होती है। सुनिश्चित नहीं है कि इसे अपनी विधि से कैसे करें।
 – 
TheWelshManc
26 अगस्त 2018, 02:45
आप किस भाग के बारे में भ्रमित हैं? अधिक जानकारी के लिए, मैं परिणामों के एक टन के लिए "जावा तुलनित्र" को गुगल करने की भी सिफारिश करता हूं।
 – 
Kevin Workman
26 अगस्त 2018, 02:45
वैसे मैं लोडस्ट्रिंग्स का उपयोग कर रहा हूं जिसका अर्थ है कि मुझे एक सरणी का उपयोग करना है, मैं इसे स्कोरबोर्ड कहता हूं जिसमें अक्षर और संख्या दोनों शामिल हैं। मैंने उदाहरणों को देखने की कोशिश की है और इसे समझ नहीं पा रहा हूं। मैंने पिछले साल विश्वविद्यालय में बहुत कुछ किया लेकिन इसका एक भार भूल गया।
 – 
TheWelshManc
26 अगस्त 2018, 02:55