Dr.Java与ASCII显示器有关

时间:2015-12-08 05:53:28

标签: java ascii

  

我想生成一个数字序列,其中:我想通过以下方式计算序列中的下一个数字:(如果数字是偶数,则除以2)和(如果数字是奇数则乘以3并添加1)。

我正在使用ASCIIPrompter并输入起始编号为29。

最终显示应重复显示序列中的数字,并根据上面的猜想生成下一个数字。我的代码的问题是“num = even”给我一个错误,我不知道如何解决这个错误。感谢非常感谢。

import java.awt.*; // for Color class
import static BasicIO.Formats.*; // for getCurrencyInstance, etc.
import static java.lang.Math.*; // for math constants and functions & random
import static java.awt.Color.*; // for Color constants (e.g. RED)

public class sequence {

    private ASCIIDisplayer display;
    private ASCIIPrompter prompt;

    public sequence() {

        display = new ASCIIDisplayer();
        prompt = new ASCIIPrompter();
        int num;
        prompt.setLabel("starting Number");
        num = prompt.readInt();
        for (int i = 1; i <= 5; i++) {
            if (num = even) {
                num = num / 2;
            } else {
                if (num = odd) {
                    num = num * 3 + 1;
                }
            }
            display.writeDouble(num);
        }
        display.close();
        prompt.close();

    }; // constructor

    public static void main(String[] args) {
        sequence c = new sequence();
    };
}

2 个答案:

答案 0 :(得分:1)

=是一个分配

if (num = even) {

这实际上将(未定义的?)值分配给变量num。试试这个:

 if (num % 2 == 0) {

如果您可以简单地使用} else {,而是单独检查奇数 - 整数没有第三种情况。

答案 1 :(得分:0)

在Java中,&#34; =&#34;是一个赋值运算符,而不是比较。

比较你需要的两个数字&#34; ==&#34;。

因为&#34; if&#34;语句需要一个布尔值(即true或false),你只需要为变量num赋一个数字,那么基本上你所说的是&#34; if(5)&#34;没有意义。

在下面的代码中,您可以看到我替换了&#34; =&#34; for&#34; ==&#34;在几个ifs。但是这不会编译,因为没有名为&#34; odd&#34;的变量。或者&#34;偶数&#34;。

如果你想要实际检查数字是否均匀,你需要做一些模块数学运算,比如if(num%2 == 0),其读数为&#34;将num除以2并取余数,如果它相等到0然后我们有一个偶数

public sequence () { 

  display = new ASCIIDisplayer();
  prompt = new ASCIIPrompter();
  int num = 0;
  prompt.setLabel("starting Number");
  num = prompt.readInt();
  for ( int i=1 ; i<=5 ; i++ ) {
   if (num == even) {  //what is the variable even? 
     num = num/2;
  }
  else {
   if (num == odd) { //You need to define the variable odd as well
     num = num*3+1;
   }
  }
  display.writeDouble(num);
  }
  display.close();
  prompt.close();  
}; // constructor