2014-05-13 12 views
5

मैं एक सरणी है कि इसजावा 3 डी सरणी असाइन महत्व देता

static String[][][] School= new String[1000][20][5]; 
  • तरह लग रहा है पहले ब्रैकेट मैं वर्ग के नाम
  • बचाने दूसरे में है मैं एक छात्र की एक आईडी बचाने
  • तीसरे में मैं छात्र (उसका नाम, परिवार का नाम इत्यादि) के बारे में जानकारी बचाता हूं।

सबसे पहले मैं सभी वर्ग नामों को आवंटित करता हूं, उसके बाद मैं प्रत्येक वर्ग को अपनी छात्र आईडी निर्दिष्ट करता हूं और फिर मैं उनकी जानकारी भर सकता हूं।

मैं यह कैसे कर सकता हूं? मैंने उदाहरण के लिए

School[i] = "A1"; 

लेकिन यह काम नहीं कर रहा है।

संपादित करें: या क्या यह सभी 3 चीजों को सहेजने का कोई और तरीका है? (कक्षा का नाम, इसके छात्र और इसके अपरदन)

+0

चेक इस - [दो से तीन आयामी (3 डी) सरणी जोड़ने के लिए जावा प्रोग्राम।] (http://www.msccomputerscience.com/2013/02/java-program करने वाली एड-दो three.html) – ARJUN

उत्तर

14
static String[][][] School= new String[1000][20][5]; 

आंकड़ा जो 3 आयाम है पर विचार करें मदद करता है।

तो जब आप School[0][0][0]="A1" डालते हैं तो इसका मतलब है कि आपने 0,0,0 स्थिति पर तत्व दर्ज किया है।

0,0,0 से यह स्थिति 1000,20,5 तक बढ़ जाएगी।

आप इस तरह सम्मिलित कर सकते हैं लेकिन आपके पास बहुत सारे तत्व हैं।

School[0][0][0]="A1" 
School[0][0][1]="A2" 
School[0][0][2]="A3" 
..... 
School[0][1][0]="B1" 
School[0][1][1]="B2" 
School[0][1][2]="B3" 
...... 

3 डी सरणी तत्वों में

int[3][4][2] array3D 
// means Three (4x2) 2 Dimensional Arrays 

int[4][2] 
//means Four 1 dimensional arrays. 

अब 3 डी सरणी में तत्वों को जोड़ने के लिए कैसे की तरह लग रहे?

आरंभ पर आप सीधे

int[][][] threeDArray = 
    { { {1, 2, 3}, { 4, 5, 6}, { 7, 8, 9} }, 
     { {10, 11, 12}, {13, 14, 15}, {16, 17, 18} }, 
     { {19, 20, 21}, {22, 23, 24}, {25, 26, 27} } }; 

उपयोग कर सकते हैं यह आपके मामले में बहुत कठिन काम है के रूप में आप हर स्थिति में विवरण सम्मिलित करना चाहते हैं। जैसा कि आपके पास 1000 रिकॉर्ड हैं।

आपका सरणी इस

enter image description here

नोट जैसे तत्वों होगा: यह इस उद्देश्य के लिए 3 डी सरणी का उपयोग करने की सलाह नहीं दी है।

सुझाव: तीन Strings के साथ एक वर्ग घोषित इस तीन मापदंडों के साथ निर्माता बना सकते हैं और गेटर और setters डाल मिलता है और के माध्यम से Objects

0

आपकी सरणी वह नहीं करेगी जो आप उम्मीद करते हैं।

प्रत्येक तत्व को एक बिंदु के साथ, 3 डी सरणी की तरह सरणी के बारे में सोचें। यदि आप एक इंडेक्स निर्दिष्ट करते हैं, तो आप अनिवार्य रूप से कंप्यूटर को बता रहे हैं "ठीक है, मैं "A1"को सरणी के इस टुकड़े को असाइन करना चाहता हूं (उदाहरण के लिए, आप String[][] elementAtI = "A1"; के समान कुछ करने की कोशिश कर रहे हैं)। अब ऐसा नहीं होता है ? 'टी मतलब, यह करता है

श्रेणी में एक ही तत्व को पाने के लिए आपको इन तीनों सूचकांकों में बताने की कितना 3 डी अंतरिक्ष में आप एक बिंदु का पता लगाने की सभी तीन निर्देशांक निर्दिष्ट करने की तरह:

School[3][4][5] = "A1"; 

3 डी सरणी की तुलना में बेहतर विचार क्या हो सकता है। सरणी कार्यों में सबकुछ पैक करना, लेकिन यहके रूप में पढ़ने योग्य नहीं है 10 है, जहां प्रत्येक SchoolClass एक name और Students की एक सरणी, और प्रत्येक Student है है एक ID, name, आदि

3

मैं बजाय एक 3 डी सरणी का उपयोग करने का सुझाव देगा, तो आप एक Student क्लास है कि सभी का आयोजन करेगा नहीं बनाएगा SchoolClass के लिए एक छात्र और ए क्लास के लिए जानकारी जो वर्ग और कक्षा के नाम के छात्रों की एक सूची रखेगी और आप उद्देश्य को पूरा करने के लिए Array of SchoolClass बनाए रख सकते हैं।

इस तरह आप इसे बेहतर तरीके से प्रबंधित करने में सक्षम होंगे।

आशा इस

0

सबसे पहले मूल्यों को निर्धारित करने, वैरिएबल फ़ील्ड आमतौर पर साथ लोअरकेस के साथ शुरू सम्मेलन द्वारा ऊंट पाठ।

static String[][][] school= new String[1000][20][5]; 

दूसरा, सरणी इस तरह काम नहीं करते हैं। स्ट्रिंग [] [] [] {{{प्रविष्टि ...} प्रविष्टि ...} प्रविष्टि ...} रखती है। प्रविष्टियों में डुप्लिकेट हो सकते हैं, जो इसे एक असुरक्षित विधि बनाता है क्योंकि आपको उसी सरणी में {"3 ए", "1", "पर्सननाम"} और {"3 ए", "1", "DifferentPersonName"} मिल जाएगा। प्रत्येक सरणी आयाम अतिरिक्त आयाम रखा है, उर्फ ​​ { "3 ए", { "1", { "PERSONNAME"}, { "DifferentPersonName"}}}, इसलिए

School[i] = "A1";, सिंटेक्स त्रुटि है, क्योंकि आप स्ट्रिंग [करना होगा ] [] स्ट्रिंग में [मैं] [] []:

School[i] = {{"A1","PersonName"}};

मेरा मानना ​​है कि एक समाधान यहाँ HashMaps उपयोग करने के लिए किया जाएगा। दोहराए गए प्रविष्टियां एक-दूसरे को ओवरराइट कर देंगी। इस मामले में, कोड होगा:

// The actual HashMap! 
static final HashMap<String, HashMap<String, String>> school 
=new HashMap<String, HashMap<String, String>>(); 

/** 
* How to use an entry using the above HashSet: 
* 
* @param className The name of the class. 
* @param id The id. 
* @param details The details. 
*/ 
void addEntry(final String className, final String id, final String details){ 
    HashMap<String, String>value=school.get(className); 
    // If the class already exists, use it, otherwise make new HashMap. 
    (value==null ? value = new HashMap<String, String>() : value) 
    // Here is how to put in the value mapping. 
    .put(id, details); 
    // Put it back in. This updates the entry. 
    school.put(value); 
} 

/** 
* How to get (iterate through) entries from the above HashSet: 
* 
* @return An array of students in format "class id details" 
*/ 
String[] getStudentsSet(){ 
    // This is an iterator. 
    Iterator<Entry<String, HashMap<String, String>>>iterator= 
     school.entrySet().iterator(); 
    Entry<String, HashMap<String, String>>next; 
    String now; 
    // This is for testing 
    final ArrayList<String>list=new ArrayList<String>(); 
    while(iterator.hasNext()){ 
    // Load new class name 
    now=(next=iterator.next()).getKey(); 
    Iterator<Entry<String, String>>iteratorlv2=next.entrySet().iterator(); 
    while(iterator.hasNext()){ 
     final Entry<String, String>entry=iterator.next(); 
     /* This is the student from class "now", id "entry.getKey()", and details "entry.getValue()" 
     * Change this line to what you want, or what you would like to use entries for. 
     */ 
     final String student=now+" "+entry.getKey()+" "+entry.getValue(); 
     // This is for testing 
     list.add(student); 
    } 
    } 
    // This is what prints to the console so you know this thing works. 
    for(final String o:list) System.out.println(o); 
    return list.toArray(new String[list.size()]); 
} 
संबंधित मुद्दे