Java 多变量循环
我希望我的程序计算x=-2.0到x=2.0之间的值。我还希望它对-3.0到3.0的标准偏差值也这样做。一张表中应总共有140个输出。但是,我遇到了问题,无法更改标准偏差值。到目前为止,我尝试的所有方法都只在一组标准偏差下输出x。如何修改外部循环以再次通过x运行并维护所有输出?以下是我到目前为止的想法,但没有成功:Java 多变量循环,java,loops,statistics,logic,Java,Loops,Statistics,Logic,我希望我的程序计算x=-2.0到x=2.0之间的值。我还希望它对-3.0到3.0的标准偏差值也这样做。一张表中应总共有140个输出。但是,我遇到了问题,无法更改标准偏差值。到目前为止,我尝试的所有方法都只在一组标准偏差下输出x。如何修改外部循环以再次通过x运行并维护所有输出?以下是我到目前为止的想法,但没有成功: import java.lang.Math; import java.util.Arrays; public class STable { public static void ma
import java.lang.Math;
import java.util.Arrays;
public class STable {
public static void main (String[] args)
{
double exponent, x, pi, e, sqrtpart, y, stnrd, mean;
mean = 0;
stnrd = -3.0;
pi = 3.14159;
e = 2.71828;
x = -2.0;
int count = 0;
int supercount = 0;
while (supercount < 140)
{
while (count < 20)
{
exponent = - ((x-mean)*(x-mean)/(2.0*stnrd));
sqrtpart = Math.sqrt(2*pi);
y = (Math.pow(e,exponent))/sqrtpart;
System.out.print(" " + y);
x = x + 0.2;
count++;
}
x=-2.0;
System.out.println("\n");
stnrd = stnrd + 1.0;
supercount++;
}
}
import java.lang.Math;
导入java.util.array;
公务舱马厩{
公共静态void main(字符串[]args)
{
双指数,x,pi,e,sqrtpart,y,stnrd,均值;
平均值=0;
stnrd=-3.0;
pi=3.14159;
e=2.71828;
x=-2.0;
整数计数=0;
int超级计数=0;
while(超级计数<140)
{
同时(计数<20)
{
指数=-((x-平均值)*(x-平均值)/(2.0*stnrd));
sqrtpart=Math.sqrt(2*pi);
y=(数学功率(e,指数))/sqrtpart;
系统输出打印(“+y”);
x=x+0.2;
计数++;
}
x=-2.0;
System.out.println(“\n”);
stnrd=stnrd+1.0;
超级计数++;
}
}
首先,您需要在每个内部循环后重置计数
变量。否则,在外部循环的所有后续过程中,计数
仍将为20,因此内部循环不会执行
其次,我不认为外部循环适用于所有内容,因为您没有使用括号来声明其范围
当我将您的代码稍微修改为:
public class STable {
public static void main (String[] args)
{
double exponent, x, pi, e, sqrtpart, y, stnrd, mean;
mean = 0;
stnrd = -3.0;
pi = 3.14159;
e = 2.71828;
x = -2.0;
int count = 0;
int supercount = 0;
while (supercount < 140) {
while (count < 20)
{
exponent = - ((x-mean)*(x-mean)/(2.0*stnrd));
sqrtpart = Math.sqrt(2*pi);
y = (Math.pow(e,exponent))/sqrtpart;
System.out.print(" " + y);
x = x + 0.2;
count++;
}
x=-2.0;
count = 0;
System.out.println("\n");
stnrd = stnrd + 1.0;
supercount++;
}
}
}
公共类稳定{
公共静态void main(字符串[]args)
{
双指数,x,pi,e,sqrtpart,y,stnrd,均值;
平均值=0;
stnrd=-3.0;
pi=3.14159;
e=2.71828;
x=-2.0;
整数计数=0;
int超级计数=0;
while(超级计数<140){
同时(计数<20)
{
指数=-((x-平均值)*(x-平均值)/(2.0*stnrd));
sqrtpart=Math.sqrt(2*pi);
y=(数学功率(e,指数))/sqrtpart;
系统输出打印(“+y”);
x=x+0.2;
计数++;
}
x=-2.0;
计数=0;
System.out.println(“\n”);
stnrd=stnrd+1.0;
超级计数++;
}
}
}
我得到了你想要的结果
作为旁注,这是一个很好的用例,用于避免由于忘记重置计数变量而导致的错误。:)
编辑-对于具有正确循环执行计数的循环版本:
public class STable {
public static void main(String[] args) {
double exponent, pi, e, sqrtpart, y, mean;
mean = 0;
pi = 3.14159;
e = 2.71828;
for (double stnrd = -3.0; stnrd <= 3.0; stnrd += 1) {
double x = -2.0;
for (int i = 0; i < 21; i++) {
exponent = -((x - mean) * (x - mean) / (2.0 * stnrd));
sqrtpart = Math.sqrt(2 * pi);
y = (Math.pow(e, exponent)) / sqrtpart;
System.out.print(" " + y);
x += 0.2;
}
System.out.println("\n");
}
}
}
公共类稳定{
公共静态void main(字符串[]args){
双指数,pi,e,sqrtpart,y,平均值;
平均值=0;
pi=3.14159;
e=2.71828;
对于(double stnrd=-3.0;stnrd我并不完全清楚您想做什么,但您应该用大括号括住每个循环,即
而
(cond){body}
请注意,您的第一个while
循环的主体没有任何大括号,这意味着您的代码实际上与
while(supercount < 140)
{
while (count < 20)
{
...
}
}
x=-2.0;
System.out.println("\n");
stnrd = stnrd + 1.0;
supercount++;
while(超级计数<140)
{
同时(计数<20)
{
...
}
}
x=-2.0;
System.out.println(“\n”);
stnrd=stnrd+1.0;
超级计数++;
我猜你希望最后一个部分在第一个中,而循环的主体中。括号编辑是解决方案,还是仅仅是纠正?(你仍然有问题吗?)这是我前一段时间做的一个标准偏差是的,似乎有效,尽管我不确定输出是否正确是的,supercount
在错误的位置递增。照此,外部循环将执行140次,总共执行2800次内部循环。将supercount++
移动到内部循环,以确保140次总执行次数然后查看输出是否更接近预期。