java - 当到达最后一个文本时重复数组?

标签 java android arrays

我对编程很陌生,我创建了这个应用程序,当按下按钮时,它会说一个笑话,唯一的问题是当它到达最后一个文本时,应用程序崩溃,因为没有更多文本可供查看。我确信有一种方法可以在到达最后一个文本时再次从头开始启动数组,我只是不知道该怎么做。任何帮助将不胜感激!

这是我的代码:

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

    final TextView line = (TextView) findViewById(R.id.line);
    Button bl = (Button) findViewById(R.id.bl);

    final String[] jokes = { 
        "joke 1", "joke 2" , "joke 3" , "joke 4"     
    };

    bl.setOnClickListener(new View.OnClickListener() {
        int rando = (int) (Math.random() * 4);
        @Override
        public void onClick(View v) {
            rando++;
            line.setText(jokes[rando]);

        }
    });
    }

最佳答案

由于每次单击按钮时您都会获得一个随机数,因此您只需在访问数组之前不增加计数器即可:

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

    final TextView line = (TextView) findViewById(R.id.line);
    Button bl = (Button) findViewById(R.id.bl);

    final String[] jokes = { 
        "joke 1", "joke 2" , "joke 3" , "joke 4"     
    };

    bl.setOnClickListener(new View.OnClickListener() {
        int rando = (int) (Math.random() * 4);
        @Override
        public void onClick(View v) {
            line.setText(jokes[rando]);

        }
    });
}

另一种选择是获取一个随机数一次,将其存储在字段中,然后在每次单击按钮时递增它:

int rando; // store in a field in your Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView line = (TextView) findViewById(R.id.line);
    Button bl = (Button) findViewById(R.id.bl);

    final String[] jokes = { 
        "joke 1", "joke 2" , "joke 3" , "joke 4"     
    };
    final int jokeCount = jokes.length;
    rando = (int) (Math.random() * 4); // initialize only in onCreate

    bl.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (++rando >= jokeCount) { // increment in onClick
                rando = 0;              // reset counter when needed
            }
            line.setText(jokes[rando]);
        }
    });
}

关于java - 当到达最后一个文本时重复数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27346852/

相关文章:

c - 生成 1 和 0 并以菱形形式存储在数组内

arrays - 另一种::如何使用 swiftyjson 循环遍历 json 数据?

java - Nexus/Maven 如何不通过 Nexus 代理所有内容

java - 以下 Guava 开发新功能

java - Facebook requestNewPublishPermissions 的回调 - Android

java - 如何修复奇怪的 Android Studio 编辑器模式?

android - 在 ViewPager 中替换 Fragment 显示黑屏?

java - 为什么我的表情给出了错误的答案?

c - 如何从 C 中的函数返回字符数组?

java - 储蓄计算器 GUI