Конструктор присваивает переменным метода (которые исчезают после завершения конструктора), когда присваивания должны быть переменными экземпляра (которые будут доступны для методов получения).
Попробуйте изменить:
public wholeAndFraction(double db) {
String st= "" + db;
st=st.replace(".", "-");
String[] str=st.split("-");
int whole=Integer.parseInt(str[0]);
int fraction=Integer.parseInt(str[1]);
}
К
public class WholeAndFraction {
private final int whole;
public int getWhole() { return whole; }
private final int fraction;
public int getFraction() { return fraction; }
public WholeAndFraction(double db){
String st=""+db;
st=st.replace(".", "-");
String[] str=st.split("-");
this.whole=Integer.parseInt(str[0]);
this.fraction=Integer.parseInt(str[1]);
}
}
Я уточнил переменные экземпляра в выражениях присваивания, но это для ясности.
Это основная первая проблема.Существуют и другие проблемы, например, использование «-» прекратится, если число будет отрицательным."."не будет присутствовать, если номер уже является целым числом.И дробная часть, в том виде, в котором она реализована, не охватывает все детали десятичной части значения.Используя приведенный выше код, «1.02» и «1.0002» имеют одинаковую дробную часть.