使用循环无限次重复语句?

Posted

技术标签:

【中文标题】使用循环无限次重复语句?【英文标题】:Repeat statement for infinite times using loop? 【发布时间】:2016-12-02 11:53:11 【问题描述】:

我想打印如下:

for(int i=0;i<should be infinite;i++)

    Data is Loading.
    sleep(100);
    Data is Loading..
    sleep(100);
    Data is Loading... 
    sleep(100);

下面是它不工作的代码

package com.queen.a01_simple_request;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity 
TextView textView;
Button button;

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

    textView = (TextView) findViewById(R.id.textView);
    button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new View.OnClickListener() 
        @Override
        public void onClick(View view) 
            for (; ; ) 
                try 
                    textView.setText("Downloading The File");
                    Thread.sleep(1000);
                    textView.setText("Downloading The File.");
                    Thread.sleep(1000);
                    textView.setText("Downloading The File..");
                    Thread.sleep(1000);
                    textView.setText("Downloading The File...");
                    Thread.sleep(1000);

                 catch (InterruptedException e) 
                    e.printStackTrace();
                
            
        
    );

现在,这应该无限循环。这些点应该永远一个接一个地变化。我不想设置像 i

【问题讨论】:

如果你想要一个无限循环,那么只需创建一个while(true) 你能举个例子吗? 简单地省略保护条件:for (int i = 0; /* nothing */; i++). 【参考方案1】:
    for(;;)
    
    try
     Data is Loading.
     Thread.sleep(100);
     Data is Loading..
     Thread.sleep(100);
     Data is Loading... 
     Thread.sleep(100);
    catch(Exception ignored)
    

编辑: 如果您在主线程(UI 线程)上执行此操作,它将冻结应用程序,您必须像这样在后台启动循环:

new Thread(new Runnable()
   @Override
   public void run()
       for(;;)
            try
             Data is Loading.
             Thread.sleep(100);
             Data is Loading..
             Thread.sleep(100);
             Data is Loading... 
             Thread.sleep(100);
            catch(Exception ignored)
        
    

【讨论】:

youzking,它不工作..当我按下按钮时,它就像冻结...... @AppleAppala 嗯嗯。你请求了一个无限循环 @TimCastelijns yeh..我在上面发布了输出...它不起作用...请看一下.. @AppleAppala 如果您在 UI 线程中使用无限循环,它将冻结应用程序,因为循环不会让用户界面有时间刷新,您必须在后台启动它,我已经编辑了答案重试【参考方案2】:

basic for statement 的前 3 个“部分”是可选的:

for ( [ForInit] ; [Expression] ; [ForUpdate] ) Statement

所以,虽然看起来很奇怪,但这是一个有效的 for 循环(永远不会做任何事情):

for (;;);

在您的情况下,只需省略 Expression:

for (int i = 0; ; i++)  ... 

【讨论】:

【参考方案3】:

试试这个:

while(true)
   code...

【讨论】:

以上是关于使用循环无限次重复语句?的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记--循环总结

为啥这个循环在c中运行无限次?

re模块

输出1234无重复三位数

无标题

vb中的循环语句