2013-03-10 124 views
0

我试图根据RadioButtons显示数组的内容。我使用2组按钮。该按钮应指向我阵列中的[x, y]。应显示数组的String值(使用Toast)。Android 2D阵列

是的,我在这方面是新手,但我试图挑选几个类似的例子,运气不大。

public class MainActivity extends Activity { 
    String[][] tipSize = { 
      {"N/A","N/A","Pink","Lt Blue","Purple","Yellow","Brown","Orange","Tan","Blue","White","Beige"}, 
      {"N/A","Pink","Lt Blue","Purple","Yellow","Brown","Orange","Green","Tan","Blue","White","Beige"}, 
      {"N/A","N/A","Pink","Purple","Turquoise","Yellow","Green","Tan","Blue","White","Red","No Tip"}, 
      {"Pink","Lt Blue","Purple","Yellow","Orange","Green","Tan","Blue","Red","Beige","Gray","N/A"}, 
      {"Pink","Lt Plue","Purple","Orange","Green","Tan","Blue","White","Beige","Black","Gray","N/A"}, 
      {"Pink","Lt Blue","Yellow","Brown","Orange","Green","Tan","Blue","White","Beige","Black","N/A"}, 
      {"Pink","Lt Blue","Yellow","Brown","Tan","Blue","White","Red","Beige","Black","No Tip","N/A"}, 
      {"Pink","Lt Blue","Purple","Yellow","Orange","Green","Tan","Blue","Red","Beige","Gray","N/A"}, 
    }; 

private RadioGroup dispenser,ounce_pg; 
private RadioButton disp,o_pg; 
String tip = ""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button finishBtn = (Button) findViewById(R.id.button1); 
    finishBtn.setOnClickListener (new View.OnClickListener() {  
     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      MainActivity.this.showit(); 
     } 
    });  
} 

protected void showit() { 
    // TODO Auto-generated method stub 
    disp = (RadioButton) findViewById(R.id.dispenser); 
    o_pg = (RadioButton) findViewById(R.id.ounce_pg); 
    tip = String tipSize [disp,o_pg]; 
    // tip is the displayed answer (Color of tip), tipSize[][] is the Array, disp is RadioButton 1 - o_pg is Radio Button 2 values. 

    Toast.makeText(MainActivity(),tip,Toast.LENGTH_LONG).show(); 
} 

} 
+0

什么是你的问题? – 2013-03-10 01:16:12

+0

我知道语法错了,但我留下来试着展示我看的方向。 感谢您的帮助。 – user2152750 2013-03-10 16:05:21

+0

如果语法错误,您的编译器错误是什么? – 2013-03-10 21:24:59

回答

0

这一行有很多问题:

tip = String tipSize [disp,o_pg]; 
  1. [disp,o_pg]应该是[disp][o_pg]因为访问二维数组通过array [x][y]

  2. String tipSize做没有意义,你可以这里没有声明类型。如果你做了(String)这将是一个演员阵容,这将是好的(但它会是多余的,因为你有一个String阵列 - 从String铸造成String什么都不做)。

  3. dispo_pg应该是int

这是因为访问索引时,你不能将对象传递给数组,数组不会“搜索”为您服务。这意味着你需要弄清楚你想访问什么职位并将其传递给他人。还要记住索引从0开始,而不是1

可编译的例子是:

tip = tipSize [0][0]; //first element of the first array ("N/A") 
+0

当RadioButton传递一个值时,是@id值还是可以设置每个单选按钮的值,然后“检查”值?此外,是作为字符串或Int传递的值?遇到麻烦时,我“int一个RadioButton”或将其转换为字符串。 – user2152750 2013-03-10 19:59:26

+0

@ user2152750 *当RadioButton传递一个值*请详细说明。当它被点击?您可以使用['OnCheckedChangedListener'](http://developer.android.com/reference/android/widget/RadioGroup.OnCheckedChangeListener.html)获取RadioButton的Id,如果它是RadioGroup的一部分或使用' OnClickListener',如果它是单独的。然后,你将不得不比较id来找出你想要的位置(例如'if(R.id.button = view.getId())String s = tipSize [0] [0];'另外,你应该阅读如果你发现我的答案有帮助,你应该[通过点击空白的选中标记来接受它] [http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html] – 2013-03-10 22:38:30

+0

@ user2152750所以它会变成绿色](http://meta.stackexchange.com/a/5235/202881)或者如果您需要进一步澄清(只要您阅读我的回复以及我发布的链接),只需发表评论即可。 – 2013-03-16 00:27:00

0

一个快速和肮脏的方式是创建包含一个分隔的字符串的字符串组中的第二值一起,然后使用分离功能,其本身返回字符串数组的简单阵列获取个人价值。

String [] allTips = {"a;b;c", "d;e;f"}; 
String [] sometips = alltips[1].split(";") 
String tip = sometips[2]; 

会导致信f