【问题标题】:Using Scanner class in java to print X1-X3+X5....n在 java 中使用 Scanner 类打印 X1-X3+X5....n
【发布时间】:2016-07-24 04:49:51
【问题描述】:

我试图打印以下系列: X1-X3+X5-X7.......X n

我已经做了所有事情,但我决定改变标志。
有人知道吗?

代码如下:

int n=10;int sum=0;int x=2;

double d=0.00;
for(int i=1;i<=n;i++){
    d = Math.pow(x,i);
    sum = sum + (int)d;
}

【问题讨论】:

  • 你能用 if 语句检查 i 是否是偶数吗? if(i%2==0){使用减号}else{使用加号}?
  • 在你的循环中使用 Math.pow(-1,i-1)
  • 只需像@LokeshAgrawal 所说的那样添加 Math.pow(-1,i-1) !
  • 你在这段代码中哪里使用了Scanner类?

标签: java class wolfram-mathematica series


【解决方案1】:

你应该做一些步骤:

第一种方式

  • 使用boolean 并将其命名为SIGN

    • 每次到达循环结束时更改它的值以确定基于 1 或 0(真或假)的符号
      • 如果signtrue,则使用+
      • 如果signfalse 使用-
  • 每次在 for 循环中增加 i 两次 (i+=2),因此 i 的值将是 1, 3, 5, ...


int n=10;int sum=0;int x=2;

double d=0.00;
boolean sign = true;
for(int i=1; i<=n ; i+=2 ){
    d=Math.pow(x,i);
    sum += ((sign)?(int)d:(-1*(int)d));
    sign = !sign;
}

第二种方式

  • 使用integer 并将其命名为SIGN
    • 每次到达循环结束时更改它的值以确定基于 1 或 -1 的符号。
  • 由于它与迭代器变量的类型相同,所以可以在循环中定义。

int n=10;int sum=0;int x=2;

for (int i = 1, sign = 1; i <= n; i += 2, sign = -sign) {
    sum += sign * (int)Math.pow(x, i);
}

【讨论】:

  • int sign=1sum += sign * (int)d;sign = -sign; 不会更容易吗?
  • @Andreas 请检查我的答案,如果需要编辑,请进行。
【解决方案2】:

您可以通过Scanner输入参数并通过Math.pow(-1,n)更改符号。 代码如下。

int sum = 0;
Scanner input = new Scanner(System.in);
System.out.println("please enter n:");
int n = input.nextInt();
System.out.println("please enter x:");
int x = input.nextInt();
for(int i = 1; i <= n; i += 2){
    sum += (int)Math.pow(-1, (i-1)/2) * Math.pow(x, i);
}

【讨论】:

    猜你喜欢
    • 2019-10-17
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 2019-03-05
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多