有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Repeate数组何时到达最后一个文本?

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

这是我的密码:

 @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]);

        }
    });
    }

共 (1) 个答案

  1. # 1 楼答案

    由于每次单击按钮都会得到一个随机数,因此在访问阵列之前,只需不增加计数器:

    @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]);
            }
        });
    }