当前位置: 首页 > 知识库问答 >
问题:

初始化对象数组成功后应用程序崩溃

和嘉澍
2023-03-14

我想从字符串数组初始化一个对象数组。

public class Card {
    private String pic;

    public Card(String pic) {
        this.pic = pic;
    }

    public String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic;
    }

    @Override
    public String toString() {
        return "Card{" +
                "pic='" + pic + '\'' +
                '}';
    }
}
package com.example.memorygame;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {
    private void main() {
        String[] pictures = {"crocodile", "duck", "lizard", "mosqitue", "parrot", "zebra"};
        //String[] pictures = {"crocodile", "crocodile", "duck","duck", "lizard","lizard", "mosqitue","mosqitue", "parrot","parrot", "zebra" ,"zebra"};
        Card[] cards = new Card[pictures.length*2];
        Functions functions = new Functions();

        for (int i = 0; i < cards.length*2; i+=2) {
            cards[i] = new Card(pictures[i/2]);
            cards[i + 1] = new Card(pictures[i/2]);
            Log.i("case", cards[i].getPic()+" "+String.valueOf(i));
            Log.i("case", cards[i].getPic()+" "+String.valueOf(i+1));
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        main();
    }
}
2020-05-27 17:36:37.345 358-358/? I/case: crocodile 0
2020-05-27 17:36:37.345 358-358/? I/case: crocodile 1
2020-05-27 17:36:37.345 358-358/? I/case: duck 2
2020-05-27 17:36:37.345 358-358/? I/case: duck 3
2020-05-27 17:36:37.345 358-358/? I/case: lizard 4
2020-05-27 17:36:37.345 358-358/? I/case: lizard 5
2020-05-27 17:36:37.345 358-358/? I/case: mosqitue 6
2020-05-27 17:36:37.345 358-358/? I/case: mosqitue 7
2020-05-27 17:36:37.345 358-358/? I/case: parrot 8
2020-05-27 17:36:37.345 358-358/? I/case: parrot 9
2020-05-27 17:36:37.345 358-358/? I/case: zebra 10
2020-05-27 17:36:37.345 358-358/? I/case: zebra 11

在这些日志之后我没有任何东西,也没有找到应用程序崩溃的任何原因。

共有1个答案

曾嘉荣
2023-03-14

您的迭代长度错误,导致IndexOutOfBoundsException,因此应用程序崩溃。

for (int i = 0; i < cards.length; i+=2) {
        cards[i] = new Card(pictures[i/2]);
        cards[i + 1] = new Card(pictures[i/2]);
        Log.i("case", cards[i].getPic()+" "+String.valueOf(i));
        Log.i("case", cards[i+1].getPic()+" "+String.valueOf(i+1));
    }

也是在最后一个日志中。我行,你打印了卡片的值[i],它给出了相同的值,但错误的是,它只打印了0,2,4,6,8,10的值。它应该打印0,1,2,3,4,5,6,7,8,9,10,11的值。

 类似资料:
  • 经过一些调试,我找到了这行代码 导致我的应用程序崩溃,我已经尝试过了 ; 但结果还是一样,有什么帮助吗??

  • 经过测试,它在非android程序上工作,但在android上初始化后立即崩溃。日志cat也没有生成任何错误消息。我从CircularFifoBuffer找到了这个。 编辑2: 08-05 21:12:48.837:I//system/bin/batteryd(1189):1566474 v_bat 3.678(3.677),i_supply 0.500,i_demand 0.282=>v_bat

  • 当我初始化的元素应用程序崩溃,如果我不初始化任何元素的应用程序显示的布局只是罚款和做一些基本的功能,我已经添加了使用在XML的onClick属性的方法 我需要从EditText元素中提取数据来进行计算。 java代码: 坠机记录: 致命例外:主进程:com.ajaydubey.fifamobilebulktradeprofitcounter,PID:17627java.lang.运行时异常:无法启

  • 问题内容: 我只是看了这个SO Post: 但是,哥伦比亚大学教授的笔记按以下方式进行。请参阅第9页。 哪种方法正确?他们似乎在说不同的话。 特别是在注释版本中没有。 问题答案: 这根本不会在Java中编译(因为您正在将数组类型的值分配给非数组类型的变量): 被以下错误拒绝(另请参见:http : //ideone.com/0jh9YE): 要进行编译,请声明其类型,然后在其上循环:

  • 我有一个应用程序崩溃的点:“New Downloader(this,mURL);”: 02-25 15:40:55.405 619-619/them.vertretungsplan e/androidruntime:致命异常:main java.lang.verifyerror:thems.vertretungsplan.downloader at thems.vertretungsplan.ve