我刚刚意识到我正在使用= +而不是运算符+ =而我的程序正在做各种奇怪和意想不到的事情.Eclipse没有给我任何类型的错误,所以我认为= +是一个合法的运算符,但在我的书中没有提到它.
我的问题是= +做什么,如果做什么,在什么情况下你会使用它?
如果这是一个简单的问题,我很抱歉,但是当第一个数字小于第二个数字时,我无法理解模数除法的概念.例如,当我的书中1%4表示余数为1.我不明白1是1%4的剩余部分
.1/4是0.25.我在考虑模数除法错误吗?
我理解一个人在某种情况下具有某些优势的概念,这取决于具体情况但是在每种情况下它们是否可以互换?我的教科书写道
for (init; test; step) {
statements;
}
Run Code Online (Sandbox Code Playgroud)
是完全相同的
init;
while (test) {
statements;
step;
}
Run Code Online (Sandbox Code Playgroud)
如何在for循环中重写以下程序?如果我将以下程序重写为for循环形式,我在设置init和测试的值时遇到问题.
import acm.program.*;
public class DigitSum extends ConsoleProgram{
public void run() {
println("this program sums the digits in an integer");
int n = readInt("enter a positive number: ");
int dsum = 0;
while ( n > 0) {
dsum += n % 10;
n /=10;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在研究一个我有点困惑的问题.问题是假设你在二战期间是英国空军的将军.你还有100架飞机来保卫英国.每次执行任务时,每架飞机都有50%的机会被德国防空炮击落,所以每次任务都会损失大约一半的飞机.你必须编写一个程序来估计每次任务后将有多少架飞机存活,以及你可以运行多少任务直到所有飞机都被击落.
我的程序不起作用,我不知道它有什么问题,所以我猜英格兰遇到了麻烦.我试图用两个while循环来解决这个问题.外部while循环表示只要你有飞机就可以将它们发送给另一个任务.内部while循环模拟实际任务.在while循环存在之后,平面的总数现在是幸存的平面.
import acm.program.*;
import acm.util.*;
public class MissionPlanes extends ConsoleProgram{
public void run(){
int planes = 100; /* total number of planes */
int suvPlanes = 0; /* surviving planes */
int mission = 0; /* total number of missions */
int planeCounter = 0; /* keeps track of the planes flying over the anti plane gun */
while (planes > 0){
while(planeCounter < planes){
planeCounter++;
if(rgen.nextBoolean()){ /* I've tried rgen.nextBoolean() with paramaters and with no paramaters */
suvPlanes …Run Code Online (Sandbox Code Playgroud) 如果在类中创建实例变量,则默认值为true或false,否则更改?
将实例变量设为ex是一种好习惯.如果为true,则将值更改为false并在整个类中使用该变量?或者你应该在概念上避免使用实例变量?
在java中,我注意到有与转换相关的方法,strings并且这些方法有时在方法的名称中使用"parse"一词.例如静态方法,
static int parseInt(String str)
Run Code Online (Sandbox Code Playgroud)
用于转换string为int.我的问题是这个.另一个词是"解析"的缩写吗?它只是一个随机的词,还是来自Java或其他任何地方的其他编程环境中的其他地方?
我正在尝试编写一个打印数字2的指数结果的程序,我想打印出10次.我想创建一个使用Math.pow(x,y)方法计算指数值的方法.
2的功率为0 = 1
2,功率为1 = 2
2,功率为2 = 4
我有一些问题.你能像我在下面那样在for循环中使用Math.pow方法吗?如何在for循环中的Math.pow(x,y)方法中声明x和y的值,还是必须在for循环之外进行?另外,在Eclipse中的raiseIntPower方法中,当我使用int n作为参数时,它给出了"重复的局部变量错误".我的理解是方法参数指定方法所需的参数.我不明白那个重复错误的含义.
import acm.program.*;
public class Exponents extends ConsoleProgram {
public void run(){
for (int n = 0; n <= 10; n++) {
println("2 to the power of " + n + " = " + raiseIntPower(n));
}
}
private int raiseIntPower (int n){
int total = 0;
for( int n = 0; n <= 10; n++){
total = Math.pow(2, n);
}
return total;
}
}
Run Code Online (Sandbox Code Playgroud) 我不知道我是否对正弦、余弦和正切有根本性的误解,或者我对 Math 类的某些方法有误解,或者我错过了其他一些东西,但我有点困惑。
我有一个 B = 90 度的直角三角形 ABC。AB 是垂直的,BC 是平的,AC 是斜边。AB = 125 和 AC = 150 的长度值。我想找到角度 A 的值。

我首先尝试找到余弦,然后我想将余弦转换为度数。
double AB = 125;
double AC = 150;
double angleA = Math.cos(AB / AC);
double angleADegrees = Math.toDegrees(angleA);
println(angleADegrees);
Run Code Online (Sandbox Code Playgroud)
编写的程序返回 57.295。如果我在我的计算器上尝试,我会得到不同的答案。如果我在计算器上计算得出余弦 = 125/150,我会得到 0.8333。Cos^-1(.83333) = 33.5573。奇怪的是 57 + 33 + 90 = 180。我上面的程序以某种方式确定了角度 C 而不是角度 A 的值。我计算余弦是错误的还是误用了 Math 类的方法?我不知道为什么我的程序不返回 33,我认为这是角度 A 的值。
init;
while (test) {
statements;
step;
}
Run Code Online (Sandbox Code Playgroud)
我有一个关于上述while循环中步骤位置的问题.写步骤的位置是否重要?换句话说,如果将步骤写为第一个语句或者在中间或末尾的某个位置,它是否会更改while循环中的任何值?如果确实如此,您可以提供一个简短的例子来说明这种效果.
我正在尝试编写一个模拟翻转硬币的程序.硬币第一次翻转我希望程序退出.我的while循环中的第一个语句翻转了一次硬币.然后我有一个if语句,说明我刚刚翻转的硬币是否退出程序.但我的计划并没有按照我想要的方式运作.有时
我的问题是我在while循环中每1个周期翻一次或两次硬币吗?硬币是否在while循环中翻转一次,然后在if条件下第二次翻转?我已经测试了它,但它每次都给出了不同错误的不同结果,我无法弄清楚原因.
if条件对于我在程序中尝试做的是否正确?
import acm.program.*;
import acm.util.*;
public class CoinToss extends ConsoleProgram{
public void run(){
while (true){
println(flipCoin());
if (flipCoin() == "heads"){
break;
}
}
}
public String flipCoin(){
String flip = rgen.nextBoolean() ? "heads" : "tails";
return flip;
}
public RandomGenerator rgen = RandomGenerator.getInstance();
}
Run Code Online (Sandbox Code Playgroud)