J'ai un problème frustrant qui pourrait être facile. Les tableaux dans Java ne semblent pas intuitivement frustrants.
J'ai un tableau de chaînes appelé title il a plusieurs titres
voici une partie du tableau
private String[] title = {
"Abundance",
"Anxiety",
"Bruxism",
"Discipline",
"Drug Addiction"
}
Cette partie semble correcte car le code est compilé et fonctionne parfaitement. Je veux maintenant créer un autre tableau BASÉ sur ce tableau. les nouveaux tableaux seront transformés en texte statique concaténé avec les données de ce tableau, puis en texte plus statique.
Je définis les deux chaînes statiques
String urlbase = "http://www.somewhere.com/data/";
String imgSel = "/logo.png";
donc j'ai ajouté la déclaration pour le nouveau tableau
String[] mStrings;
puis je crée une boucle for de base pour parcourir et créer les éléments du nouveau tableau
for(int i=0;i<title.length;i++) {
mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
}
la boucle prend la valeur du tableau et supprime les caractères non alpha et le rend ainsi en minuscule
La toxicomanie
devient
la toxicomanie
Je veux finir avec quelque chose comme ça
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"
J'ai essayé plusieurs fois différentes de déclarer mStrings, mais tout était inexact quand je le laisse dehors. Eclipse suggère ceci
String[] mStrings;
Maintenant, cela semble être assez facile et correct, mais quand je saisis quoi que ce soit après, je reçois une erreur qui dit
Syntax error on token ";", { expected after this token
Puisqu'il est un à un avec l'autre tableau, j'ai essayé ceci dans la déclaration, mais cela échoue également
String[] mStrings[title.length];
juste pour lui donner une quantité
Je pense que l'erreur est quelque part dans la déclaration mais je n'arrive pas à trouver un document qui l'exprime clairement.
Il semble qu’il s’attende non seulement à une déclaration, mais également au chargement du tableau, ce que je ne veux pas, mais j’ai aussi essayé de le charger avec trois éléments, mais cela ne fonctionnait toujours pas correctement.
Comme je l'ai dit, je veux le charger dans la boucle for
Toute aide serait appréciée.
J'ai essayé de définir la taille du tableau mais j'ai eu la même erreur
voici le code exact
c'est peut-être ailleurs
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];
L'ERREUR MONTRE ICI
for(int i=0;i<title.length;i++) {
mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
}
(source: imobilizeit.com )
Je pense que le début de la résolution de ce problème est le fait que l’utilisation de la boucle for ou de toute autre fonction ou action ne peut pas être effectuée dans la définition de classe mais doit être incluse dans une définition de méthode/constructeur/bloc à l’intérieur d’un objet. classe.
utilisation:
String[] mStrings = new String[title.length];
Vous n’initialisez pas votre String[]
. Vous devez soit l'initialiser en utilisant la taille exacte du tableau, comme suggéré par @ TrầnSĩLong, soit utiliser un List<String>
puis converti en un String[]
_ (si vous ne connaissez pas la longueur):
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
Déclarez que la taille du tableau résoudra votre problème
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]);
}
Comme suggéré par Trần Sĩ Long, utilisez
String[] mStrings = new String[title.length];
Et remplacez la concatation de chaîne par une parenthèse appropriée.
mStrings[i] = (urlbase + (title[i].replaceAll("[^a-zA-Z]", ""))).toLowerCase() + imgSel;
Essaye ça. Si le problème vient de la concation, le problème sera résolu entre parenthèses. J'espère que ça aide.