2013-11-09 1 views
1

프로그램의 전체 목적 :은 우리 태양계의 9 개 행성 각각에 대한 표면 중력 (g)을 결정합니다.제발, Java, 차트 내에서 계산 된 결과를 출력 하시겠습니까?

(나는 알고 있습니다 ... 명왕성은 행성이 아니지만이 프로그램에 있습니다.)

문제 : 프로그램에서 차트를 만들고 표면 중력을 계산합니다. 서식 지정을 올바르게하는 데 도움이 필요합니다.이 서식은 열에 정렬해야합니다. 또한이 문제를 해결하는 과정에서 나는 행성 중 오직 하나의 행성에 대해 계산 된 표면 영역을 인쇄하도록 프로그램을 엉망으로 만들었습니다.

import java.io.IOException; 
import java.io.PrintWriter; 
import java.io.File; 

public class GravityV1 
{ 

    //print the data 
    public static void printResults(String[] names, double[] diameter, double[] mass, int x); 
    { 
     System.out.printf("%-10s%21.1f%20.4e\n",names[x],diameter[x],mass[x]);   
    } 

    //calculate the surface gravity 
    public static double calcGravity(double[] m, double[] d) 
    { 
    double gravity = 0.0; 

     for (int i= 0; i < 9; i++) { 
     gravity = (((6.67E-11) * (m[i]))/(Math.pow(d[i]/2, 2))); 
     } 

    return gravity;   
    } 


    //main method 
    public static void main (String [ ] args) 
    {   
    double[] mass = { 3.30E23, 4.869E24, 5.972E24, 6.4219E23, 1.900E27, 5.68E26, 8.683E25, 1.0247E26, 1.27E22 }; 

    double[] diameter = { 4880000, 12103000.6, 12756000.3, 6794000, 142984000, 120536000, 51118000, 49532000, 2274000 }; 

    String[] names = { "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto" }; 


    System.out.printf("%-7s%20s%20s%25s\n","Planet Name","Diameter","Mass(kg)", "g (m/s^2)"); System.out.println("============================================================================="); 

     for (int x = 0; x < 9; x++) { 

     printResults(names, diameter, mass, x); 

     double surfaceGravity = calcGravity(mass, diameter); 

     System.out.println(surfaceGravity);       
     } 

    System.out.println(); 
} 

}

출력 지금이 바로 다음과 같습니다 어떤 도움이 많이 감사합니다

Planet Name   Diameter   Mass(kg)    g (m/s^2) 
============================================================================= 
Mercury    4880000.0   3.3000e+23 
0.655252407816091 
Venus    12103000.6   4.8690e+24 
0.655252407816091 
Earth    12756000.3   5.9720e+24 
0.655252407816091 
Mars     6794000.0   6.4219e+23 
0.655252407816091 
Jupiter    142984000.0   1.9000e+27 
0.655252407816091 
Saturn    120536000.0   5.6800e+26 
0.655252407816091 
Uranus    51118000.0   8.6830e+25 
0.655252407816091 
Neptune    49532000.0   1.0247e+26 
0.655252407816091 
Pluto     2274000.0   1.2700e+22 
0.655252407816091 

!

답변

1
System.out.printf("%-10s%21.1f%20.4e",names[x],diameter[x],mass[x]); // removed 2 characters 

System.out.printf("%.21f\n", surfaceGravity); // play with number to get it right 
+0

중간에 공간을 두는 방법을 제외하고 둘 다 너무나 감사합니다. 첫 번째 줄은 다음과 같습니다 (한 줄에 모두 표시) : Mercury 4880000.0 3.3000e + 233.697090835796829000000 –

+0

"숫자를 올바르게 사용하려면 재생하십시오"- "% 10.10f \ n"등 – arkonautom

+0

나는 그 (것)들과 놀지 않았다는 것을 나는 짐작한다 충분히, "% 26.10f \ n"은 완벽했습니다. 다시 감사합니다 –

1

calcGravity 메서드는 모든 행성의 표면 중력을 계산하고 마지막 행성을 반환합니다. 대신 그 일을, 그것은 아마도 하나 개의 특정 행성에 대해서만 표면 중력을 계산해야합니다

:

public static double calcGravity(double m, double d) 
{ 
double gravity = (((6.67E-11) * (m))/(Math.pow(d/2, 2))); 
return gravity;   
} 

은 그럼 당신은 모든 행성의 데이터를 특정 행성의 데이터를이 방법을 부를 것이다

double surfaceGravity = calcGravity(mass[x], diameter[x]); 
+0

위의 코멘트를 참조하십시오. :) 감사합니다! –

+0

어떤 댓글을 참조합니까? – Joni

+0

죄송합니다. Joni, 나는 위의 답변에 대해 언급 한 서식에 대해 동일한 질문을하지만, arkonautom이 대답했습니다. 시간 내 주셔서 다시 한번 감사드립니다. –

관련 문제