2012-11-02 17 views
9

Kolay olabilecek, sinir bozucu bir sorun yaşıyorum. Java'daki diziler sinir bozucu bir şekilde sezgisel değil.Dizi Dize Açıklaması

Ben başlık adında bir dize dizisi birkaç başlıkları

burada

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

Bu kısım kodu derler olarak Tamam görünüyor ve sadece iyi çalışır dizinin parçası olan sahiptir var şimdi istiyorum Bu dizide BASED başka bir dizi oluşturun. Yeni diziler, bu diziden gelen verilerle ve daha fazla statik metinle birleştirilen statik metin haline getirilecektir.

Böylece i Yeni dizi için

String[] mStrings; 

beyanı ilave

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

iki statik dizeleri tanımlamak ve sonra döngü yineleme ve elemanlarını oluşturmak için temel oluşturabilir yeni dizi

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

döngü, dizi değerini alır ve alfa ch dışındaki dizileri çıkarır ars ve böylece

küçük harfli yapar

Uyuşturucu Bağımlılığı

olur

drugaddiction

Ben bildirerek birkaç farklı denemeler yaptı bu

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" 

gibi bir şey ile bitirmek istiyorum mStrings ama hepsi yanlış dışarı çıkarken Eclipse buönerdi

String[] mStrings; 

Şimdi bu oldukça kolay ve doğru olmalıdır gibi görünüyor ama ben başka dizi bire bir olduğu için

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

diyor bir hata alıyorum sonra ben bir şey girdiğinizde ben bildiriminde bu çalıştı ama aynı zamanda bir miktar

0 give it sadece
String[] mStrings[title.length]; 

başarısızHatanın beyanda bir yerde olduğunu düşünüyorum, ancak açıkça ortaya koyan herhangi bir dokümanı bulamıyorum. o bir deklarasyon sadece bekliyordum ama aynı zamanda meydana gelmesi dizinin yükleniyor gibi

Ben istemiyorum ama ben de üç elemanlı yüklemeden denedim ama yine de sağ

işe yaramadı neyi gibi görünüyor Belirtmek istediğim gibi onu döngü için

içine yüklemek istiyorum Herhangi bir yardım takdir edilecektir.

Ben dizi boyutunu ayarlamak çalıştım ama aynı hatayı burada

var belki başka bir yerde olduğunu

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]; 

HATA BURAYA

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

olduğunu

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

+0

[Google dizisinde "Dizi dizisi bildirim java" için üçüncü sonuç.] (Http://stackoverflow.com/questions/1200621/how-to-declare-an-array-in-java) – kcoppock

+0

Deniyorum @Ram kiran tarafından belirtilen önerileri hala & ^% $ hatasını görüyorum Yine hata, ---- belirtecindeki sözdizimi hatası ";" } 's class gövdesini kapatmak için, bu dizinin ilk dizisinin sözdiziminde yanlış bir şey olduğunu düşünmeme neden olan başlık doğru mu? –

+0

Projenizi temizlemeyi deneyin. Muhtemelen sadece Eclipse berbat. 15-20 dakika harcayarak bir sözdizimi hatası yakaladım, bir keresinde sadece Eclipse'in yanlış yorumladığını fark ettim. – kcoppock

cevap

4

Bu sorunun çözümünün başlangıcı, for döngüsünün veya herhangi bir işlev veya eylemin sınıf tanımında gerçekleştirilememesi, ancak bir yönteme/kurucuya/bloğa dahil edilmesi gerektiğidir. bir sınıfın içindeki tanım.

19

kullanım:

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

dizi boyutunu beyan senin sorunun

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

tam olarak denedim ama yine de hata alıyorum ---- Sözdizimi ";", sözdiziminden sonra beklenen sözdizimi hatası ----- –

+0

kodumu ve sınamayı koydu. Doğru sonuç aldım –

+0

tam olarak bunu yaptım ve hata hala gösterir, bu yüzden tüm dosyayı ekledim belki sadece ifade yakın konumda gösterir başka bir hatadır.Hatanın görünmemesinin tek yolu, programlı olarak yüklemeye çalıştığı ve yalnızca başlık dizisi bitti, ancak amacı tersine çevirdiği gibi, yükleme zamanında yüklemeye çalışan hurdadır. hardcoding değerlerinden uzaklaşmaya çalışmak –

1

Aşağıda gibi yazabilirsiniz çözecektir. Eğer ArrayList kullanmak can sıkıcı daha iyi diziler bulursanız bu thread

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

sözdizimi kurallarını inceleyin .

13

String[] başlatılamıyor. Sen (siz uzunluğunu bilmiyorum durumunda) @ TrầnSĩLong tarafından önerildiği gibi, tam dizi boyutunu kullanarak başlatmak zorunda kalmaz veya bir String[] dönüştürmek ardından List<String> kullanmak ve ya: Trần SI As Long

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

önerilen, uygun parantez ile dize konkalamasını değiştirin.

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

Bunu deneyin. Karışma nedeniyle sorun varsa, uygun parantez ile çözülecektir. Umarım yardımcı olur.