2016-12-29 23 views
0

我已經有一個程序正在將(SI)單元轉換爲另一個程序的代碼。我正在使用JOptionPane,它正在工作。但我有問題,我必須輸入數字8次而不只是2次。Java:JOptionPane輸入

任何人都可以提出解決方案嗎?

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

歡迎來到堆棧溢出。爲了更快地獲得更好的幫助,請發佈[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)或[簡短,自包含,正確示例](http://www.sscce.org /) – Dan

回答

1

你寫readin()時,都會調用該方法,並要求用戶鍵入兩個值。這發生在您的代碼的四個地方,共有8個對話框。

相反,只需調用該方法一次。將返回值存儲在變量中,並將必要的值作爲參數傳遞給需要它的方法:

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"); 
    } 
}