2016-12-29 1 views
0

私は、(SI)単位を他の単位に変換するプログラムのコードを持っています。私はJOptionPaneを使って作業しています。しかし、私は数字を8回入力しなければならないという問題があり、2回だけではありません。Java:JOptionPane Input

誰も解決策を提案できますか?

import javax.swing.JOptionPane; 

class Aufgabe { 

    // Newton in Kilopond 
    static double newton(){ 
     double e = readin()[0]; 
     double newton = e*0.10197; 
     return newton; 
    } 

    // Kilopond in Newton 
    static double kilopond(){ 
     double f = readin()[1]; 
     double kilopond = f/0.10197; 
     return kilopond; 
    } 

    // method readin 
    static double[] readin(){ 
     String a = JOptionPane.showInputDialog("newton:"); 
     String b = JOptionPane.showInputDialog("kilopond:"); 
     double n = Double.parseDouble(a); 
     double k = Double.parseDouble(b); 
     return new double[]{n, k}; 
    } 

    // Main-Methode 
    public static void main (String[] args) { 
     double a = readin()[0]; 
     double b = readin()[1]; 
     double c = newton(); 
     double d = kilopond(); 
     System.out.println(a + " N = " + c + "kp"); 
     System.out.println(b + " kp = " + d + "N"); 
    } 
} 
+1

コードを投稿しますか? – Jobin

+0

ようこそスタックオーバーフロー。すぐに役立つように、[Minimal、Complete、and Verifiable example](http://stackoverflow.com/help/mcve)または[短く、自己完結型の正しい例](http://www.sscce.org /) – Dan

答えて

1

あなたがreadin()を書くたびに、メソッドが呼び出され、ユーザーは2つの値を入力するよう要求されています。これは、コード内の4箇所で発生し、合計8個のダイアログボックスが表示されます。

代わりに、メソッドを1回だけ呼び出します。戻り値を変数に格納し、それを必要とするメソッドに必要な値を引数として渡します。

class Aufgabe { 

    private static final double CONVERSION_FACTOR = 0.10197; 

    // Newton in Kilopond 
    static double newton(double e) { 
     double newton = e * CONVERSION_FACTOR; 
     return newton; 
    } 

    // Kilopond in Newton 
    static double kilopond(double f) { 
     double kilopond = f/CONVERSION_FACTOR; 
     return kilopond; 
    } 

    // method readin 
    static double[] readin() { 
     String a = JOptionPane.showInputDialog("newton:"); 
     String b = JOptionPane.showInputDialog("kilopond:"); 
     double n = Double.parseDouble(a); 
     double k = Double.parseDouble(b); 
     return new double[] { n, k }; 
    } 

    // Main-Methode 
    public static void main(String[] args) { 
     double[] valuesRead = readin(); 
     double a = valuesRead[0]; 
     double b = valuesRead[1]; 
     double c = newton(a); 
     double d = kilopond(b); 
     System.out.println(a + " N = " + c + "kp"); 
     System.out.println(b + " kp = " + d + "N"); 
    } 
}