2012-11-02 12 views
9

मुझे एक निराशाजनक समस्या है जो आसान हो सकती है। जावा में सरणी निराशाजनक रूप से अंतर्ज्ञानी नहीं लगती है।ऐरे स्ट्रिंग घोषणा

मैं एक स्ट्रिंग सरणी शीर्षक नामक यह कई खिताब

यहाँ

सरणी के भाग के

private String[] title = { 
     "Abundance", 
     "Anxiety", 
     "Bruxism", 
     "Discipline", 
     "Drug Addiction" 
    } 

इस भाग के रूप में कोड संकलित में ठीक लगता है और ठीक चलाता है है अब मैं चाहता हूँ इस सरणी पर आधारित एक और सरणी बनाएं। नए सरणी को इस सरणी के डेटा और फिर अधिक स्थिर पाठ के साथ संयोजित स्थिर पाठ बनाया जाएगा।

मैं दो स्थिर तार

String urlbase = "http://www.somewhere.com/data/"; 
    String imgSel = "/logo.png"; 

तो मैं

String[] mStrings; 

नई सरणी के लिए घोषणा जोड़ा परिभाषित करने और फिर मैं एक बुनियादी लूप के माध्यम से पुनरावृति और के तत्वों को बनाने के लिए बनाए जाने वाले नई सरणी

for(int i=0;i<title.length;i++) { 
     mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel; 
    } 

लूप सरणी मान लेता है और गैर अल्फा ch स्ट्रिप्स करता है आर्स और यह इस प्रकार

लोअरकेस बनाता

ड्रग एडिक्शन

हो जाता है

drugaddiction

मैं इस

mStrings[0]="http://www.somewhere.com/data/abundance/logo.png" 
mStrings[1]="http://www.somewhere.com/data/anxiety/logo.png" 
mStrings[2]="http://www.somewhere.com/data/bruxism/logo.png" 
mStrings[3]="http://www.somewhere.com/data/discipline/logo.png" 
mStrings[4]="http://www.somewhere.com/data/drugaddiction/logo.png" 

की तरह कुछ के साथ समाप्त करने के लिए मैं घोषित करने पर कई अलग अलग प्रयास करने की कोशिश की चाहते हैं mStrings लेकिन सभी गलत थे जब मैं इसे छोड़ देता हूं ग्रहण इसका सुझाव देता है

String[] mStrings; 

अब इस तरह यह काफी आसान और सही किया जाना चाहिए लगता है, लेकिन जब मैं कुछ भी दर्ज करने के बाद यह मैं एक त्रुटि है कि कहते हैं

Syntax error on token ";", { expected after this token 

चूंकि यह अन्य सरणी के साथ एक एक हो सकता है मिल रहा घोषणा में यह करने की कोशिश की लेकिन यह भी विफल रहता है

String[] mStrings[title.length]; 

बस इसे एक मात्रा

0 देने के लिएमुझे लगता है कि त्रुटि घोषणा में कुछ जगह है लेकिन मुझे ऐसा कोई दस्तावेज़ नहीं दिख रहा है जो इसे स्पष्ट रूप से बाहर रखता है।

यह मैं नहीं है क्या चाहते हैं लेकिन मैं यह भी तीन तत्वों के साथ यह लोड हो रहा है की कोशिश की लेकिन यह अभी भी सही

काम नहीं किया है लगता है जैसे कि यह न केवल एक घोषणा की उम्मीद है, लेकिन यह भी सरणी जो होने के लिए की लोड हो रहा है जैसा कि मैंने कहा है कि मैं इसे लूप

में लोड करना चाहता हूं, किसी भी मदद की सराहना की जाएगी।

मैं सरणी आकार सेट करने का प्रयास किया था, लेकिन एक ही त्रुटि

यहाँ

मिला शायद यह कहीं और है

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

ListView list; 
LazyAdapter adapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    list=(ListView)findViewById(R.id.list); 
    adapter=new LazyAdapter(this, mStrings); 
    list.setAdapter(adapter); 

    Button b=(Button)findViewById(R.id.button1); 
    b.setOnClickListener(listener); 
} 

@Override 
public void onDestroy() 
{ 
    list.setAdapter(null); 
    super.onDestroy(); 
} 

public OnClickListener listener=new OnClickListener(){ 

    public void onClick(View arg0) { 
     adapter.imageLoader.clearCache(); 
     adapter.notifyDataSetChanged(); 
    } 
}; 


private String[] title = { 
     "Abundance", 
     "Anxiety", 
     "Bruxism", 
     "Discipline", 
     "Drug Addiction" 
} 


String urlbase = "http://imobilize.s3.amazonaws.com/giovannilordi/data/"; 
String imgSel = "/logo.png";  
String[] mStrings = new String[title.length]; 

त्रुटि यहाँ

for(int i=0;i<title.length;i++) { 
    mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel; 
} 
शो सटीक कोड

है

screenshot of error in eclipse http://www.imobilizeit.com/_errorshot/errorshot.png

+0

[Google में "ऐरे स्ट्रिंग घोषणा जावा" के लिए तीसरा परिणाम।] (Http://stackoverflow.com/questions/1200621/how-to-declare-an-array-in-java) – kcoppock

+0

मैं कोशिश कर रहा हूं @राम किरण द्वारा उल्लिखित सुझाव, लेकिन मुझे अभी भी & ^% $ त्रुटि दिखाई देती है फिर त्रुटि है ---- टोकन पर सिंटेक्स त्रुटि ";", {इस टोकन के बाद अपेक्षित ---- दूसरा त्रुटि ध्वज एक और ' } 'कक्षा के शरीर को बंद करने के लिए जो मुझे लगता है कि तारों की पहली सरणी के वाक्यविन्यास में कुछ गलत है, शीर्षक सही है? –

+0

अपनी परियोजना की सफाई करने का प्रयास करें। यह शायद सिर्फ ग्रहण खराब हो रहा है। मैंने सिंटैक्स त्रुटि को शिकार करने में 15-20 मिनट बिताए, केवल एक बार यह महसूस करने के लिए कि यह ग्रहण गलत व्याख्या कर रहा था। – kcoppock

उत्तर

4

मुझे लगता है कि इस मुद्दे के समाधान की शुरुआत यह तथ्य है कि लूप या किसी अन्य कार्य या क्रिया का उपयोग कक्षा परिभाषा में नहीं किया जा सकता है लेकिन इसे विधि/कन्स्ट्रक्टर/ब्लॉक में शामिल करने की आवश्यकता है एक कक्षा के अंदर परिभाषा।

19

उपयोग:

String[] mStrings = new String[title.length]; 
4

सरणी आकार घोषित आपकी समस्या

String[] title = { 
      "Abundance", 
      "Anxiety", 
      "Bruxism", 
      "Discipline", 
      "Drug Addiction" 
     }; 
    String urlbase = "http://www.somewhere.com/data/"; 
    String imgSel = "/logo.png"; 
    String[] mStrings = new String[title.length]; 

    for(int i=0;i<title.length;i++) { 
     mStrings[i] = urlbase + title[i].toLowerCase() + imgSel; 

     System.out.println(mStrings[i]); 
    } 
+0

जैसा कि मैंने कहा है कि मैंने उस सटीक चीज़ को आजमाया है लेकिन मुझे अभी भी त्रुटि मिलती है ---- टोकन पर सिंटेक्स त्रुटि ";", {इस टोकन के बाद अपेक्षित ----- –

+0

मेरा कोड और परीक्षण डालें। मुझे सही परिणाम मिला –

+0

मैंने ठीक वही किया और त्रुटि अभी भी दिखाती है इसलिए मैंने पूरी फ़ाइल को जोड़ा शायद यह एक और त्रुटि है जो सिर्फ उस स्थान पर दिखाई देती है जो कथन के करीब है।त्रुटि प्रकट नहीं होने का एकमात्र तरीका स्क्रैप प्रोग्राम को इसे लोड करने की कोशिश कर रहा है और शीर्षक सरणी की तरह घोषणा के समय इसे लोड करता है लेकिन यह उद्देश्य को हरा देता है। मूल्यों को हार्डकोडिंग से दूर करने की कोशिश कर रहा है –

1

आप नीचे दिए गए की तरह लिख सकते हैं का समाधान होगा। इस thread

AClass[] array; 
... 
array = new AClass[]{object1, object2}; 

में वाक्य रचना दिशानिर्देश देखें आप सरणियों को खोजने कष्टप्रद बेहतर ArrayList का उपयोग करते हैं।

13

आप अपने String[] को प्रारंभ नहीं कर रहे हैं। आप या तो, के रूप में @ TrầnSĩLong ने सुझाव दिया सटीक सरणी आकार का उपयोग कर इसे प्रारंभ करने की आवश्यकता है, या एक List<String> का उपयोग करें और फिर एक String[] में कन्वर्ट (मामले में आप लंबाई पता नहीं है):

String[] title = { 
     "Abundance", 
     "Anxiety", 
     "Bruxism", 
     "Discipline", 
     "Drug Addiction" 
    }; 
String urlbase = "http://www.somewhere.com/data/"; 
String imgSel = "/logo.png"; 
List<String> mStrings = new ArrayList<String>(); 

for(int i=0;i<title.length;i++) { 
    mStrings.add(urlbase + title[i].toLowerCase() + imgSel); 

    System.out.println(mStrings[i]); 
} 

String[] strings = new String[mStrings.size()]; 
strings = mStrings.toArray(strings);//now strings is the resulting array 
2

Trần Sĩ तक सुझाव दिया गया है,

String[] mStrings = new String[title.length]; 

और उचित संश्लेषण के साथ स्ट्रिंग concatation को प्रतिस्थापित करें।

mStrings[i] = (urlbase + (title[i].replaceAll("[^a-zA-Z]", ""))).toLowerCase() + imgSel; 

इसे आजमाएं। यदि यह संगतता के कारण समस्या है, तो इसे उचित ब्रैकेट के साथ हल किया जाएगा। आशा करता हूँ की ये काम करेगा।

संबंधित मुद्दे