2016-03-05 23 views
0

我正在编写一个程序,转换某些单位,我不断遇到错误。我的程序有4种方法(一种用于原始单元,一种用于转换为新单元,另一种用于转换&单元用于多少单元),如你所知,每种方法都被正确写入。当我运行它时,我得到了“未解决的编译问题”的错误。单位转换方法

下面的代码:

public static String getUnitFrom(){ 
    String original = ""; 

    final String OZ = "oz"; 
    final String LB = "lb"; 
    final String IN = "in"; 
    final String FT = "ft"; 

    switch(original){ 
    case OZ: 
     original = "oz"; 
     break; 
    case LB: 
     original = "lb"; 
     break; 
    case IN: 
     original = "in"; 
     break; 
    case FT: 
     original = "ft"; 
     break; 
    default: 
     System.out.println("Invalid input."); 
    } 
    return original;  

} 

public static String getUnitTo(String conversionFromUnit){ 
    String conversionFromUnit = ""; 
    final String G = "g"; 
    final String KG = "kg"; 
    final String MM = "mm"; 
    final String CM = "cm"; 
    final String M = "m"; 

    if(getUnitFrom().equals("oz") || getUnitFrom().equals("lb")){ 
     switch(conversionFromUnit){ 
     case G: 
      conversionFromUnit = "g"; 
      break; 
     case KG: 
      conversionFromUnit = "kg"; 
      break; 
     default: 
      System.out.println("Invalid conversion!"); 
     } 
    } 
    else if (getUnitFrom().equals("in") || getUnitFrom().equals("ft")){ 
     switch (conversionFromUnit){ 
     case MM: 
      conversionFromUnit = "mm"; 
      break; 
     case CM: 
      conversionFromUnit = "cm"; 
      break; 
     case M: 
      conversionFromUnit = "m"; 
      break; 
     default: 
      System.out.println("Invalid conversion!"); 
     } 
    } 
    return conversionFromUnit; 
} 
public static double getValue(){ 
    double value = 0; 

    if(getUnitFrom() > 0 && getUnitTo() > 0){ 
     value = input.nextDouble(); 
    } 

} 
public static double getConversionRate(String from, String to){ 
    double rate = 0; 

    if(from.equals(getUnitFrom("oz")) && to.equals(getUnitTo("g"))){ 
     rate = 28.3; 
    } 
    else if(from.equals(getUnitFrom("oz")) && to.equals(getUnitTo("kg"))){ 
     rate = 0.028; 
    } 
    else if(from.equals(getUnitFrom("lb")) && to.equals(getUnitTo("g"))){ 
     rate = 453.6; 
    } 
    else if(from.equals(getUnitFrom("lb")) && to.equals(getUnitTo("kg"))){ 
     rate = 0.045; 
    } 

    if(from.equals(getUnitFrom("in")) && to.equals(getUnitTo("mm"))){ 
     rate = 25.4; 
    } 
    else if(from.equals(getUnitFrom("in")) && to.equals(getUnitTo("cm"))){ 
     rate = 2.54; 
    } 
    else if(from.equals(getUnitFrom("in")) && to.equals(getUnitTo("m"))){ 
     rate = 0.0254; 
    } 
    else if(from.equals(getUnitFrom("ft")) && to.equals(getUnitTo("mm"))){ 
     rate = 304.8; 
    } 
    else if(from.equals(getUnitFrom("ft")) && to.equals(getUnitFrom("cm"))){ 
     rate = 30.48; 
    } 
    else if(from.equals(getUnitFrom("ft")) && to.equals(getUnitFrom("m"))){ 
     rate = 0.3048; 
    } 

    return rate; 
} 

public static void main(String[] args) { 
    String convertFrom = getUnitFrom(); 
    String convertTo = getUnitTo(); 
    double valueOf = getValue(); 
    System.out.println(getValue() + " " + getUnitFrom() + " = " + (getValue() * getConversionRate()) + " " + getUnitTo()); 

} 
public static Scanner input = new Scanner(System.in); 

回答

0
  1. 这是因为你的方法getUnitTo(字符串)要求的字符串作为参数,而在你的主要方法,你不传递任何。
  2. if(getUnitFrom()> 0 & & getUnitTo()> 0):getUnitFrom返回无法使用“>”运算符进行比较的字符串。
  3. 所有错误都是因为错误的函数调用(检查函数的签名并传递所需的值)。
0

在抛出错误后列出问题。

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
The method getUnitTo(String) in the type Testing is not applicable for the arguments() 
The method getConversionRate(String, String) in the type Testing is not applicable for the arguments() 
The method getUnitTo(String) in the type Testing is not applicable for the arguments() 

at testing.Testing.main(Testing.java:122)