为什么我的变量打印不是?

时间:2015-01-09 13:16:14

标签: java while-loop println

 public class FirstofTen
 {
public static void main(String[] args) throws IOException 
{
     int i = 10;

   while (i >= -10) {

      double x = i / 10.0;

      i--;

      String X = String.format("%.2f", x);

      System.out.println(X);        
    }

    i = 10; 

    while(i >= -10) {

      double x = i / 10.0;

      i--;

      String X = String.format("%.2f", x);

      double Y = Math.sqrt(Math.pow(1, 2) - Math.pow(x, 2));

      System.out.println(String.format("%.2f", Y));            
   }

这是一项学校作业,我不想要答案,只是帮助。基本上,我认为三角形的斜边总是1.我也知道X必须介于-11之间,如果必须在十分之一的位置它是一个双(0.50.6等。所以让我们说X0.9,那么我必须让Java使用毕达哥拉斯定理计算三角形第三边的结果。我得到那个部分。问题是,我依赖于输出。我得到了这个输出:

1.00
0.90
0.80
0.70
0.60
0.50
0.40
0.30
0.20
0.10
0.00
-0.10
-0.20
-0.30
-0.40
-0.50
-0.60
-0.70
-0.80
-0.90
-1.00
0.0
0.44
0.60
0.71
0.80
0.87
0.92
0.95
0.98
0.99
1.00
0.99
0.98
0.95
0.92
0.87
0.80
0.71
0.60
0.44
0.00

正如您所看到的,它打印X然后在它下面打印Y.如何将它们分成不同的列?

5 个答案:

答案 0 :(得分:0)

您必须指定要在其中打印的内容 System.out.println();,而不是: System.out.println(Y);

答案 1 :(得分:0)

您的第二个while循环未能输入,因为i在第一个while循环后小于-10。你应该在第二次循环之前重置它的值。

答案 2 :(得分:0)

您的代码存在多个问题:

首先,你在第二个循环开始时将你的i重新调回10;或使用for循环,它会更清洁。那样,这段代码

int i = 10;
while (i >= -10) {
    // work
    i--;
}

成为这个:

for (int i = 10; i >=-10; i--) {
    // work
}

其次,在第二个循环中,您应该格式化Y并实际打印出来。您也可以一次性进行格式化和打印:

System.out.println(String.format("%.2f", Y));

答案 3 :(得分:0)

  while (i >= -10){
     double x = i / 10.0;
     i--;
     String X = String.format("%.2f", x);
     System.out.println("X : " + X);
  }

循环退出时, i 的值为 i = -1.0

所以,你的下一次没有执行,因为 i> = -10 返回 false

解决方案:

int i=10;
System.out.print("Values For X : ");
while (i >= -10) {
   // Code Goes Here for first while loop
   System.out.print(" " + X)
}
i=10; // Just re-initialize i with previous value i.e., 10
System.out.print("Values For Y : ");
while(i>=-10) {
   // Code Goes Here for second while loop
    System.out.print(" " + Y);  // and not  System.out.println();
}

答案 4 :(得分:0)

在第二个while循环之前在代码中再次初始化i = 10