我怎么能用String ... args? (String dot dot dot args)

时间:2013-12-01 06:50:33

标签: java string args

  

12-01 15:54:01.509:E / JSON Parser(19280):解析数据时出错

     

org.json.JSONException:Value      

转换为JSONObject 12-01 15:54:01.514:W / dalvikvm(19280):

     

threadid = 13:线程以未捕获的异常退出(group = 0x417a22a0)

     

12-01 15:54:01.519:E / AndroidRuntime(19280):致命异常:

     

AsyncTask#2 12-01 15:54:01.519:E / AndroidRuntime(19280):

     

java.lang.RuntimeException:执行

时发生错误      

doInBackground()12-01 15:54:01.519:E / AndroidRuntime(19280):at

     

android.os.AsyncTask $ 3.done(AsyncTask.java:299)12-01 15:54:01.519:   E / AndroidRuntime(19280):at

     

java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:273)   12-01 15:54:01.519:E / AndroidRuntime(19280):at

     

java.util.concurrent.FutureTask.setException(FutureTask.java:124)   12-01 15:54:01.519:E / AndroidRuntime(19280):at

     

java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:307)   12-01 15:54:01.519:E / AndroidRuntime(19280):at

     

java.util.concurrent.FutureTask.run(FutureTask.java:137)12-01

     

15:54:01.519:E / AndroidRuntime(19280):at

     

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)

     

12-01 15:54:01.519:E / AndroidRuntime(19280):at

     

java.util.concurrent.ThreadPoolExecutor中$ Worker.run(ThreadPoolExecutor.java:569)

     

12-01 15:54:01.519:E / AndroidRuntime(19280):at

     

java.lang.Thread.run(Thread.java:856)12-01 15:54:01.519:

     

E / AndroidRuntime(19280):引起:

     

java.lang.ArrayIndexOutOfBoundsException:length = 0; index = 0 12-01

     

15:54:01.519:E / AndroidRuntime(19280):at

     

com.example.bubblewave0.Room_Main_Activity $ IncreasePnum.doInBackground(Room_Main_Activity.java:264)   12-01 15:54:01.519:E / AndroidRuntime(19280):at

     

com.example.bubblewave0.Room_Main_Activity $ IncreasePnum.doInBackground(Room_Main_Activity.java:1)   12-01 15:54:01.519:E / AndroidRuntime(19280):at   android.os.AsyncTask $ 2.call(AsyncTask.java:287)12-01 15:54:01.519:   E / AndroidRuntime(19280):at   java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:305)   12-01 15:54:01.519:E / AndroidRuntime(19280):... 4 more

我如何获得数组的值(string ... args)?

protected String doInBackground(String... args) {
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    String temp = args[0];
    params.add(new BasicNameValuePair(TAG_PNUM, temp));  // i get error over here
    JSONObject json = jsonParser.makeHttpRequest(url_update_product,
    "POST", params);               

    System.out.println(args[0]);  //this works well.... shows me 2.
}


Integer itmp = 2;
doInBackground(itmp.toString());

2 个答案:

答案 0 :(得分:0)

在Java中,您的函数doInBackground(String... args) {几乎(但不完全)等同于doInBackground(String[] args) {。一个实际的区别是前者也可以通过doInBackground();调用。无论如何,这是它的工作原理 -

public static void test(String... args) {
  System.out.println(Arrays.toString(args));
}

答案 1 :(得分:0)

如果您的代码在

处抛出异常
params.add(new BasicNameValuePair(TAG_PNUM, temp));

我不认为它可以在

再次打印该值
System.out.println(args[0]);

因为执行永远不会到达那里。

如果要执行您的代码System.out.println(args[0]);,那么params.add(new BasicNameValuePair(TAG_PNUM, temp));肯定会有效。

顺便说一句,你应该检查args并检查它的长度,然后再做任何事情。