我想生成一个数字序列,其中:我想通过以下方式计算序列中的下一个数字:(如果数字是偶数,则除以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();
};
}
答案 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