首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java.lang.StringIndexOutOfBoundsException警告: length=75;regionStart=0;regionLength=100

Java.lang.StringIndexOutOfBoundsException警告: length=75;regionStart=0;regionLength=100
EN

Stack Overflow用户
提问于 2014-11-19 18:34:58
回答 2查看 1.5K关注 0票数 2

我收到了关于Logcat的警告,我仍然找不出如何修复它。也许有人能给我看看解决办法。为什么logcat不能显示我所有的JSON?只是展示了其中的一些。这是正常的还是我应该在代码中添加一些内容?

代码语言:javascript
复制
11-19 12:40:46.296: I/.........(1644): [{"id":"119","judul":"Daftar Penerima Beasiswa Bidik Misi","kategori":"beasiswa","published":"2014-09-17 06:27:19","isi":"Silhkan klik link di bawah ini : Penerima Beasiswa Bidik Misi Terima kasih."},{"id":"118","judul":"Penerima Beasiswa Toyota dan Astra","kategori":"beasiswa","published":"2014-09-17 06:26:48","isi":"Kepada mahasiswa yang namanya tercantum dalam\u00a0link berikut ini Mohon segera datang ke kantor bikem untuk realisasi beasiswa Toyota dan Astra Terima kasih."},{"id":"117","judul":"BAKTI SOSIAL TANAM POHON DI KAMPUS III","kategori":"beasiswa","published":"2014-09-17 06:26:18","isi":"Seluruh penerima beasiswa UKSW diundang hadir (wajib) dalam acara tanam pohon pada hari Sabtu, 16 November 2012 jam 06.30 di kampus III. Mahasiswa langsung menuju ke kampus III desa blotongan dengan membawa air untuk menyiram, alat menanam, penyangga bibit dari bambu (tinggi 1 M dan lebar 4 cm), rafia, label nama dilapis plastik (10 cm x 12 cm) (lubang sudah disediakan) daftar ketua kelompok dan nomor HP dapat dilihat di papan pengumuman, info beasiswa, dan web."},{"id":"116","judul":"Pendidikan Agama Kelas H (Dosen : Bpk. Thobias Messakh)","kategori":"lainnya","published":"2014-09-17 06:25:24","isi":"Jadwal Matakuliah Pendidikan Agama Kelas H yang diampu oleh Bpk. Dr. Thobias Messakh ialah Hari Kamis, 16-18 Ruang di ABX102. Mohon untuk diperhatikan. Terima Kasih"},{"id":"115","judul":"Program MAGANG di PT. KIBAR KREASI INDONESIA","kategori":"lainnya","published":"2014-09-17 06:24:57","isi":"Kalau kamu anak muda yang mau bikin perubahan, tertarik bikin proyek yang berguna buat orang banyak, dan mau mencari pengalaman yang bisa memaksimalkan potensi kamu, yuk gabung... PT. KIBAR KREASI INDONESIA menajak Mahasiswa UKSW untuk bergabung dalam program Magang selama 2 Bulan...Syarat & Ketentuan lebih lanjut bisa dilihat di link berikut :\u00a0http:\/\/goo.gl\/erZALk Terima Kasih. Salam, Google Student Ambassador"},{"id":"114","judul":"Panggilan Mahasiswa (DKV)","kategori":"lainnya","published":"2014-09-17 06:24:27","isi":"Panggilan kepada mahasiswa atas nama GLADYS HANNEKE LOUDY NIKIJULUW (692011055) mohon segera menghadap Bp. Michael di kantor pada hari Rabu, 17 September 2014 jam 12.00 WIB. Harap diperhatikan. \u00a0 Terima kasih, \u00a0 Salam, Michael"},{"id":"113","judul":"Panggilan Mahasiswa TI","kategori":"lowongan-pekerjaan","published":"2014-09-17 06:23:42","isi":"Mohon mahasiswa dengan NIM dibawah ini datang ke kantor kaprogdi S1 TI paling lambat hari Rabu, 4 Juni 2014. Berikut daftar NIM nya : - 67 2007 020 (Catur Heru Nugroho) - 67 2007 026 (Arya Berliandi) - 67 2007 156 (Ayu Wulan Sari) - 67 2007 183 (Andreas Vipri Nandha Gunadi S) - 67 2007 289 (Febriyanto Heri S) - 67 2009 003 (Georgius Teniwut) - 67 2010 612 - 67 2011 705 - 67 2011 712 - 67 2012 707 \u00a0 Demikian atas perhatiannya terima kasih \u00a0 Salam, Kaprogdi S1 TI"},{"id":"112","judul":"Undangan Pendidikan Publik (Jurnal Perempuan)","kategori":"lowongan-pekerjaan","published":"2014-09-17 06:23:06","isi":"Untuk info lebih lengkap silahkan klik\u00a0disini."},{"id":"111","judul":"Lowongan Kerja Formulatrix","kategori":"lowongan-pekerjaan","published":"2014-09-17 06:22:33","isi":"Berikut ini lowongan yang sedang dibuka saat ini di Formulatrix, silahkan klik link dibawah ini:  RnD Mechanical Design Engineer RnD Mechanical Design Engineer (Internship), special qualification: minimum 6 month - 1 year in the final year of study RnD Junior Electronic Engineer --\u00a0http:\/\/siva-id.jobstreet.com\/_ads\/id\/jobs\/2014\/7\/new\/p\/40\/1319232.htm?17145620 RnD Junior Electronic Engineer (Internship ), special qualification: Minimum 6 month - 1 year in the final year of study Firmware Engineer --\u00a0http:\/\/siva-id.jobstreet.com\/_ads\/id\/jobs\/2014\/7\/new\/p\/40\/1319217.htm?17145342 RnD Senior Software Engineer --\u00a0http:\/\/siva-id.jobstreet.com\/_ads\/id\/jobs\/2014\/7\/new\/p\/40\/1319207.htm?17144918 RnD Junior Software Engineer (Internship), special qualification: Minimum 6 month - 1 year in the final year of study HR
11-19 12:40:47.086: W/System.err(1644): java.lang.StringIndexOutOfBoundsException: length=75; regionStart=0; regionLength=100
11-19 12:40:47.086: W/System.err(1644):     at java.lang.String.startEndAndLength(String.java:588)
11-19 12:40:47.106: W/System.err(1644):     at java.lang.String.substring(String.java:1475)
11-19 12:40:47.106: W/System.err(1644):     at com.example.cobalagi.AksesServerActivity$LoadAllPengumuman.doInBackground(AksesServerActivity.java:1)
11-19 12:40:47.106: W/System.err(1644):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
11-19 12:40:47.106: W/System.err(1644):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
11-19 12:40:47.106: W/System.err(1644):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
11-19 12:40:47.106: W/System.err(1644):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-19 12:40:47.106: W/System.err(1644):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-19 12:40:47.106: W/System.err(1644):     at java.lang.Thread.run(Thread.java:841)
11-19 12:40:47.106: W/System.err(1644):     at com.example.cobalagi.AksesServerActivity$LoadAllPengumuman.doInBackground(AksesServerActivity.java:111)
11-19 12:40:47.266: I/ActivityManager(1273): Displayed com.example.cobalagi/.AksesServerActivity: +1s932ms
11-19 12:40:47.266: I/Choreographer(1273): Skipped 48 frames!  The application may be doing too much work on its main thread.
11-19 12:40:47.306: I/WindowManager(1273): Switching to real app window: Window{b32ad1f0 u0 com.example.cobalagi/com.example.cobalagi.AksesServerActivity}
11-19 12:40:53.626: D/dalvikvm(1380): GC_FOR_ALLOC freed 533K, 16% free 3413K/4048K, paused 10ms, total 20ms

这是我的课:

代码语言:javascript
复制
public class AksesServerActivity extends ListActivity {

    private ProgressDialog pDialog;

    //JSONParser jParser = new JSONParser();

    ArrayList<HashMap<String, String>> daftar_pengumuman = new ArrayList<HashMap<String, String>>();

    private static String link_url = "http://10.0.2.2/Pengumuman/get_all_pengumuman.php";

    private static final String PNG_ID = "id";
    private static final String PNG_JUDUL = "judul";
    private static final String PNG_KATEGORI = "kategori";
    private static final String PNG_PUBLISHED = "published";
    private static final String PNG_ISI = "isi";

    JSONArray pengumuman = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        daftar_pengumuman = new ArrayList<HashMap<String, String>>();
        new LoadAllPengumuman().execute();
        ListView lv = getListView();
        lv.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String kode = ( (TextView) view.findViewById(R.id.kode) ).getText().toString();

                Intent in = new Intent(getApplicationContext(), DetailAksesServer.class);
                in.putExtra(PNG_ID, kode);
                startActivity(in);
            }
        });
    }

    class LoadAllPengumuman extends AsyncTask<String, String, String> {
    @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(AksesServerActivity.this);
            pDialog.setMessage("Loading Pengumuman. Harap Tunggu . . .");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        protected String doInBackground(String... args) {
            try {
                Log.i(".........", "Hellooooo......");
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpGet httpPost = new HttpGet(link_url);
                HttpResponse response = httpClient.execute(httpPost);
                HttpEntity entity = response.getEntity();
                String jsonString = EntityUtils.toString(entity);
                Log.i(".........", jsonString);
                //JSONObject json = new JSONObject(jsonString);
                //JSONArray jArray = json.getJSONArray(PNG_ID);

                //JSONObject json = jParser.ambilJson(link_url);

                //Log.d("Pengumuman:", json.toString());


                JSONArray jArray = new JSONArray(jsonString);

                for(int i = 0; i < jArray.length(); i++) {
                    JSONObject a = jArray.getJSONObject(i);

                    //String id = a.getString(PNG_ID);
                    String judul = a.getString(PNG_JUDUL);
                    String kategori = a.getString(PNG_KATEGORI);
                    String published = a.getString(PNG_PUBLISHED);
                    String isi = a.getString(PNG_ISI).substring(0, 100)+"...(baca selengkapnya)";                       
                    HashMap<String, String> map = new HashMap<String, String>();

                    //map.put(PNG_ID, id);
                    map.put(PNG_JUDUL, judul);
                    map.put(PNG_KATEGORI, kategori);
                    map.put(PNG_PUBLISHED, published);
                    map.put(PNG_ISI, isi);

                    daftar_pengumuman.add(map);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        protected void onPostExecute(String file_url) {
            pDialog.dismiss();

            runOnUiThread(new Runnable() {
                public void run() {
                    //public void adapter_listview() {
                    ListAdapter adapter = new SimpleAdapter(AksesServerActivity.this, daftar_pengumuman,
                    R.layout.list_item,
                    new String[] { PNG_JUDUL, PNG_KATEGORI, PNG_PUBLISHED, PNG_ISI, PNG_ID}, 
                        new int[] {R.id.judul, R.id.kategori, R.id.published, R.id.isi, R.id.kode });
                    setListAdapter(adapter);

                }
            });
        }
    }

    public static void longLog(String str) {
        if (str.length() > 4000) {
            Log.d("", str.substring(0, 4000));
            longLog(str.substring(4000));
        } else
            Log.d("", str);
    }
}

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 18:44:55

您的PNG_ISI字符串不长100个字符,即使您要求系统返回一个长度为100个字符的子字符串。你可以用两种方式来处理这个问题--第一种是跳过“阅读更多”的文本,如果它不是100个字符的话,另一种是在你拥有的东西之后添加一个“阅读更多”的文本。

代码语言:javascript
复制
// if you only want a "read more" suffix for long strings
String isi = a.getString(PNG_ISI);
if (isi.length() >= 100) {
    isi = isi.substring(0, 100) + "...(baca selengkapnya)";
}

// if you want to always have a "read more" suffix
String isi = a.getString(PNG_ISI);
isi = isi.substring(0, Math.min(isi.length(), 100)) + "...(baca selengkapnya)";
票数 0
EN

Stack Overflow用户

发布于 2014-11-19 18:38:48

在进行假定字符串长度的调用之前:

代码语言:javascript
复制
String isi = a.getString(PNG_ISI).substring(0, 100)+"...(baca selengkapnya)";

必须确保字符串至少有100个字符:

代码语言:javascript
复制
String isi = "";
String png = a.getString(PNG_ISI);
if (png.length() >= 100)
    isi = png.substring(0, 100)+"...(baca selengkapnya)";
else 
    // do something else
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27024361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档