计算某个数的倍数的java代码?
在我的示例中,我使用Math.PI,因此它是一个double。这是一个简单的代码,但有一点我不知道如何做: 我希望代码使用用户给定的乘数值计算某个数的倍数的java代码?,java,algorithm,Java,Algorithm,在我的示例中,我使用Math.PI,因此它是一个double。这是一个简单的代码,但有一点我不知道如何做: 我希望代码使用用户给定的乘数值a计算sin或cos函数的基本周期X。n值初始化为n=1,是一个整数值 如果(2*pi*n)/a=X的结果低于pi,则n应增加,并应继续增加,直到该数字是pi的倍数,然后打印结果 只是想澄清一下:a是x的乘数,它在函数sin或cos中出现如下情况: cos(ax) sin(ax) 我遇到的问题是计算出这个数字是否是pi的倍数(假设它已经大于pi) 这是我所能得
a
计算sin
或cos
函数的基本周期X
。n
值初始化为n=1
,是一个整数值
如果(2*pi*n)/a=X
的结果低于pi
,则n
应增加,并应继续增加,直到该数字是pi
的倍数,然后打印结果
只是想澄清一下:a
是x
的乘数,它在函数sin
或cos
中出现如下情况:
cos(ax)
sin(ax)
我遇到的问题是计算出这个数字是否是pi的倍数(假设它已经大于pi)
这是我所能得到的,它是不完整的
public void printSinusoidalPeriod(double multiplier /* this would be `a` */){
double pi=Math.PI;
double p = (2 * pi * (double) n) / multiplier;
while(p<pi){
if(n%pi==0){
n=n+1;
System.out.println(n);
p = (2 * pi * (double) n) / multiplier;
}
}
p= (double)Math.round(p * 100) / 100;
System.out.println("period of function is = " + p + " and n = " + n);
}
public void printSinsualPeriod(双乘数/*这将是'a`*/){
double pi=Math.pi;
双p=(2*pi*(双)n)/乘数;
而(p如果我理解正确的话
while((2 * pi * n)/a)<pi)
{
if(!(n%pi==0))
{
n++;
}
}
while((2*pi*n)/a)如果我理解正确的话
while((2 * pi * n)/a)<pi)
{
if(!(n%pi==0))
{
n++;
}
}
while((2*pi*n)/a)如果我正确理解了你的问题,我必须在使用php之前解决类似的问题。不确定javascript的正确语法是什么,但也许你应该保留一个计数器,直到(x/pi)是一个整数,表示它是pi的倍数
我知道这不是正确的代码,但类似于:
while (!isint(x/pi)) {
x++;
}
if (isint(x/pi)) {
//CODE TO EXECUTE
}
如果我正确理解您的问题,我必须在使用php之前解决类似的问题。不确定javascript的正确语法是什么,但也许您应该保留一个计数器,直到(x/pi)是一个整数,表示它是pi的倍数
我知道这不是正确的代码,但类似于:
while (!isint(x/pi)) {
x++;
}
if (isint(x/pi)) {
//CODE TO EXECUTE
}
你似乎在计算什么时候
(2 * pi * n)/a = m * pi where m is some integer multiple.
所以
另一个约束是
(2*pi*n)/a
所以
2*pi*n
要使这两个方程都为真,m必须是小于1的整数,但因为n从1开始,所以它永远不会为真。当
(2 * pi * n)/a = m * pi where m is some integer multiple.
所以
另一个约束是
(2*pi*n)/a
所以
2*pi*n
要使这两个方程都为真,m必须是小于1的整数,但因为n从1开始,所以它永远不会为真。好的,在这里的建议的帮助下,我最后是这样做的
public void printSinusoidalPeriod(double a){
double pi=Math.PI;
double p=m*pi;
while(n<a/2){
if((double)Math.round((n*pi)%pi)!=0.01){
n=n+1;
m = (int) Math.round(((2 * (double) n) / a));
p= (double)Math.round(m * pi * 100) / 100;
p=p*n;
}
}
System.out.println("period of function is = " + p + " and n = " + n);
System.out.println("Check: p/n = " + p/n);
}
public void打印正弦周期(双a){
double pi=Math.pi;
双p=m*pi;
(n好的,下面是我在这里的建议的帮助下最后是怎么做的
public void printSinusoidalPeriod(double a){
double pi=Math.PI;
double p=m*pi;
while(n<a/2){
if((double)Math.round((n*pi)%pi)!=0.01){
n=n+1;
m = (int) Math.round(((2 * (double) n) / a));
p= (double)Math.round(m * pi * 100) / 100;
p=p*n;
}
}
System.out.println("period of function is = " + p + " and n = " + n);
System.out.println("Check: p/n = " + p/n);
}
public void打印正弦周期(双a){
double pi=Math.pi;
双p=m*pi;
虽然(如果我正确理解了您的算法,它将始终停在n=a/2
。这对a=3或a=1不起作用,这是x的倍数(我将尝试在问题中澄清它,以便问题变得更有意义问题到底是什么?cos(ax)的周期)
是2*Pi/a
,我认为您不需要算法来计算它。如果我正确理解您的算法,它将始终停在n=a/2
。这对a=3或a=1不起作用,这是x的倍数(我将尝试在问题中澄清它,以便使问题更具意义问题到底是什么?cos(ax)
的周期是2*Pi/a
,我认为您不需要算法来计算它。(2*Pi*n)是你的X,我没有碰过它,所以它对你更有意义。如果你也添加了你尝试的代码,这会很有帮助。多位是我正在努力解决的位。我希望得到帮助。我会考虑添加一些代码。请记住这是双位(浮动)重点是,你可能不会精确地降落在一个倍数上。你会想要像(n%pi
whereGOOD_ough
可能就是一个例子,0.0000001
。我会让其他人讨论正确的值。如果周期很小,还有其他复杂的问题-那么你对预期函数的边缘情况感到满意吗?啊,这现在有意义了!我不知道你之前在说什么…@achiles.Richard我不需要它精确,但我不想错过边界中应该包含的内容,所以我想我会尝试你的示例谢谢你的提示!我会报告回来!好的,我的编辑如上所述,我想你在@Richard上,但我不确定如何使它工作(2*pi*n)是你的X,我没有碰过它,所以它对你更有意义。如果你也添加了你尝试的代码,这会很有帮助。多位是我正在努力解决的位。我希望得到帮助。我会考虑添加一些代码。请记住这是双位(浮动)重点是,你可能不会精确地降落在一个倍数上。你会想要像(n%pi
whereGOOD_ough
可能就是一个例子,0.0000001
。我会让其他人讨论正确的值。如果周期很小,还有其他复杂的问题-那么你对预期函数的边缘情况感到满意吗?啊,这现在有意义了!我不知道你之前在说什么…@achiles.Richard我不需要它精确,但我不想错过边界中应该包含的内容,所以我想我会尝试你的例子谢谢你的提示!我会报告回来!好的,我的编辑如上所述,我想你在@Richard上,但我不确定如何让它工作Whoooooops…逻辑仍然可以转移吗?Whoooops…lo不能吗还是转学?