While循环需要布尔值,但是找到了int

时间:2018-12-18 17:44:02

标签: java android incompatibletypeerror

我已经坚持了很久了。在Android Studio中单击一个按钮时,我希望一个整数(称为PageNo)的值增加1。我希望根据该值,在TextView框中显示不同的文本(Act2PageNo)。例如,如果PageNo = 2,则Act2PageNo将给出特定产品的选项2的描述。 但是,它无法在While循环中识别我的代码,即我的'while(PageNo = 1)'部分提供了一个整数,但需要一个布尔值。还提到不兼容的类型。

我的代码如下:感谢所有帮助。

package com.example.wma76143.testappactivitychange;

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

import javax.xml.transform.Result;

public class Activity2 extends AppCompatActivity {
private TextView Act2Title;
Button btnnNext;
Button btnPrevious;
private TextView Act2PageNo;
private int PageNo = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
        Act2Title = (TextView) findViewById(R.id.textView);
        Act2PageNo = (TextView) findViewById(R.id.textPageNo);
        btnnNext = (Button) findViewById(R.id.buttonNext);
        btnPrevious = (Button) findViewById(R.id.buttonPrevious);


        btnnNext.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                PageNo++;
                Gotonextpage();}

        });
    }
    public void Gotonextpage() {
        while (PageNo=1){
           Act2PageNo.setText("Text will be put here to describe Option 1");
        }
        while (PageNo=2){
            Act2PageNo.setText("Text will be put here to describe Option 2");
        }
        while (PageNo=3){
            Act2PageNo.setText("Text will be put here to describe Option 3");
        }

    }

    }

4 个答案:

答案 0 :(得分:2)

使用表达式PageNo==1进行比较。使用PageNo=1将返回1,其类型为intwhile表达式需要一个布尔条件来求值。因此,请使用PageNo==1(它是相等运算符)并返回true类型的falseboolean

答案 1 :(得分:2)

您只需要使用相等运算符==而不是赋值运算符=。这将根据需要将您的表达式评估为布尔值:

public void Gotonextpage() {
  while (PageNo == 1){
    Act2PageNo.setText("Text will be put here to describe Option 1");
  }
  while (PageNo == 2){
    Act2PageNo.setText("Text will be put here to describe Option 2");
  }
  while (PageNo == 3){
    Act2PageNo.setText("Text will be put here to describe Option 3");
  }
}

话虽这么说-我认为您想要的是if语句,因为while块将一直循环直到条件为假,在这种情况下-永远循环。所以:

public void Gotonextpage() {
  if (PageNo == 1) {
    Act2PageNo.setText("Text will be put here to describe Option 1");
  }
  if (PageNo == 2) {
    Act2PageNo.setText("Text will be put here to describe Option 2");
  }
  if (PageNo == 3) {
    Act2PageNo.setText("Text will be put here to describe Option 3");
  }
}

答案 2 :(得分:1)

您需要再添加一个等号

喜欢

while(PageNo==1){
  // Do something here
}

答案 3 :(得分:0)

如您的错误所述,while循环接受布尔值,而不是整数或任何其他值。 在您的代码中,您可以使用!=,==,> =,<=值来检查条件(因为while循环用于条件检查)。 除了上面的代码,您可以进行如下所示的更改。

public void Gotonextpage() {
    while (PageNo == 1){
        Act2PageNo.setText("Text will be put here to describe Option 1");
    }
    while (PageNo == 2){
        Act2PageNo.setText("Text will be put here to describe Option 2");
    }
    while (PageNo == 3){
        Act2PageNo.setText("Text will be put here to describe Option 3");
    }    
}

请使用while循环的布尔条件更新代码。