如何将String值实现到数组中

时间:2013-04-13 18:12:29

标签: java android arrays string

我创建了这个代码,我有一个String数组。问题是我有一个来自另一个Intent的值,我想添加到数组中。我知道使用ArrayList要容易得多,但问题出在后面我已将值放到数组中,我想在Textview上设置数组的随机字符串,所以我使用

txtV1.setText(myStringArray[new Random().nextInt(myStringArray.length)]);

但这对于ArrayList是不可能的,因为它说:表达式的类型必须是数组类型,但它已解析为ArrayList

我用Google搜索但找不到任何解决方案。 希望你能帮帮我。

这是我的全部代码:

String[] myStringArray = {"Object1","Object2","Object3"};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_main);
    txtV1=(TextView)findViewById(R.id.textView1);

Bundle extras = getIntent().getExtras();
        String value = extras.getString("key");//this value I want to add to the array

txtV1.setText(myStringArray[new Random().nextInt(myStringArray.length)]);

4 个答案:

答案 0 :(得分:0)

我建议将System.arraycopy用于扩展数组,如下所示:

String[] oldArray = {"Object1","Object2","Object3"};
String[] newArray = new String[oldArray.length + 1];
System.arraycopy(oldArray, 0, newArray, 0, oldArray.length);

String randomValue = newArray[new Random().nextInt(newArray.length)];

这会留下最后一个空格,您可以填写所需的String

或者,根据您的意愿和变数:

String[] myStringArray = {"Object1","Object2","Object3"};
String[] myNewStringArray = new String[myStringArray.length + 1];
System.arraycopy(myStringArray, 0, myNewStringArray, 0, myStringArray.length);
myNewStringArray[myNewStringArray.length - 1] = extras.getString("key");

txtV1.setText(myNewStringArray[new Random().nextInt(newArray.length)]);

虽然如果您发现使用ArrayList来改变代码的可能性,我强烈推荐这种做法。

<强>更新

ArrayList

相同的方法
List<String> myList = new ArrayList( myArray ); // Or Arrays.asList("Object1", "Object2", "Object3"); if you'd like to hardcode initial values.
myList.add(extras.getString("key");
txtV1.setText(myList.get(new Random().nextInt(myList.size())));

答案 1 :(得分:0)

您可以使用ArrayList来保存字符串,然后使用get(int)来检索特定的String或toArray(),以便在需要时将列表转换为字符串数组。

ArrayList <String> array = new ArrayList<String>();
array.add(new String("Object1"));
array.add(new String("Object2"));
array.add(new String("Object3"));

setText(array.get(new Random().nextInt(array.size())));

答案 2 :(得分:0)

这对我来说很合适

Random rand = new Random();
ArrayList<String> myArray = new ArrayList<String>();
myArray.add("MyKey");
myArray.add("MyKey2");
myArray.add("MyKey3");
TextView myTextView = new TextView(null); 
myTextView.setText(myArray.get(rand.nextInt(myArray.length())));

你的问题就是其他问题,

答案 3 :(得分:0)

为什么不使用ArrayList&lt;&gt;而不是数组?

ArrayList<String> myStrings = new ArrayList<String>(Arrays.asList("Object1","Object2","Object3"));

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.activity_main);
    txtV1=(TextView)findViewById(R.id.textView1);

    Bundle extras = getIntent().getExtras();
    String value = extras.getString("key");

    myStrings.add(value);
    int randomIndex = new Random().nextInt(myStrings.size());
    txtV1.setText(myStrings.get(randomIndex));