В то время как цикл требует логического, но нашел int - PullRequest
0 голосов
/ 18 декабря 2018

Я застрял на этом целую вечность.Одним нажатием кнопки в 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 голосов
/ 18 декабря 2018

, поскольку ваша ошибка говорит, что цикл while принимает логические значения, а не целое число или любые другие значения.В вашем коде вы можете использовать либо! =, ==,> =, <= значения для проверки условия (потому что цикл while предназначен для условной проверки).Вместо приведенного выше кода вы можете изменить его, как показано ниже. </p>

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.

0 голосов
/ 18 декабря 2018

вам нужно добавить еще один равный

вот так

while(PageNo==1){
  // Do something here
}
0 голосов
/ 18 декабря 2018

Вам просто нужно будет использовать оператор равенства == вместо оператора присваивания =.Это будет оценивать ваше выражение как логическое значение по желанию:

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");
  }
}
0 голосов
/ 18 декабря 2018

Используйте выражение PageNo==1 для сравнения.Использование PageNo=1 вернет 1, который имеет тип int.Для выражения while необходимо логическое условие.Итак, используйте PageNo==1, который является оператором равенства и возвращает либо true, либо false, типа boolean.

...