我有一个令人沮丧的问题,这很容易.java中的数组似乎令人沮丧,不直观.
我有一个名为title的String数组,它有几个标题
这是阵列的一部分
private String[] title = {
"Abundance",
"Anxiety",
"Bruxism",
"Discipline",
"Drug Addiction"
}
Run Code Online (Sandbox Code Playgroud)
这部分似乎没问题,因为代码编译并运行得很好现在我想基于这个数组创建另一个数组.新数组将与来自此数组的数据连接成静态文本,然后是更多静态文本.
我定义了两个静态字符串
String urlbase = "http://www.somewhere.com/data/";
String imgSel = "/logo.png";
Run Code Online (Sandbox Code Playgroud)
所以我添加了新数组的声明
String[] mStrings;
Run Code Online (Sandbox Code Playgroud)
然后我创建一个基本的for循环来迭代并创建新数组的元素
for(int i=0;i<title.length;i++) {
mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
}
Run Code Online (Sandbox Code Playgroud)
循环获取数组值并去除非alpha字符并使其小写
吸毒成瘾
变
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"
Run Code Online (Sandbox Code Playgroud)
我尝试了几种不同的尝试来声明mStrings,但是当我把它遗漏时,所有这些都是不正确的Eclipse表明了这一点
String[] mStrings;
Run Code Online (Sandbox Code Playgroud)
现在这看起来应该是相当容易和正确的但是当我输入任何东西之后我得到一个错误说
Syntax error on token ";", { expected after this token
Run Code Online (Sandbox Code Playgroud)
因为它与另一个数组是一对一的,所以我在声明中尝试了这个,但它也失败了
String[] mStrings[title.length];
Run Code Online (Sandbox Code Playgroud)
只是给它一个数量
我认为错误是声明中的某个地方,但我似乎无法找到任何明确说明的文档.
似乎它不仅期望一个声明,而且还要加载数组,这是我不想要的,但我也尝试加载它有三个元素,但它仍然无法正常工作
正如我所说,虽然我想在for循环中加载它
任何帮助将不胜感激.
我确实尝试设置数组大小,但得到了相同的错误
这是确切的代码
也许它在其他地方
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];
Run Code Online (Sandbox Code Playgroud)
错误显示在这里
for(int i=0;i<title.length;i++) {
mStrings[i] = urlbase + title[i].replaceAll("[^a-zA-Z]", "").toLowerCase() + imgSel;
}
Run Code Online (Sandbox Code Playgroud)
eclipse中的错误截图http://www.imobilizeit.com/_errorshot/errorshot.png
Phi*_*hil 16
你没有初始化你的String[].您需要使用@TrầnSĩLong建议的确切数组大小对其进行初始化,或者使用a List<String>然后转换为a 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
Run Code Online (Sandbox Code Playgroud)
声明数组大小将解决您的问题
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]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
254894 次 |
| 最近记录: |