Написал программу которая переводит дробное число из четырехричной в двенадцатеричную систему счисления, но выдает ошибки. Помогите пожалуйста исправить программу, кто может подправьте пожалуйста код.
Код программы:
| Код |
package laba12_architecture_drob; import java.math.BigDecimal; import java.util.Scanner; public class Main { public void fromFourToTwelve() { Scanner in = new Scanner(System.in); String x; x = in.toString(); //введённое число char[] mas = x.toCharArray(); for(int i=0;i<=x.length();i++) { if(mas[i]!='0' || mas[i]!='1' || mas[i]!='2' || mas[i]!='3' || mas[i]!='.') {System.out.println("Wrong input"); break;} } double x_dbl = Double.parseDouble(x); //конверт в double int cel_ch = (int)x_dbl; // выделение целой части String s = Integer.toString(cel_ch); //целая часть в строку int r = Integer.parseInt(s, 4); //из 4-ричной в десятичную int l = x.length()-s.length()-1; // длинна дробной части (общая - целая - ".") double drob_ch = x_dbl-cel_ch; //дробная часть числа BigDecimal bd = new BigDecimal(drob_ch); bd = bd.setScale(l, BigDecimal.ROUND_HALF_UP); drob_ch = bd.doubleValue(); // Перевод дробной части в десятичную систему счисления drob_ch = drob_ch * Math.pow(10, l); //получим только дробную часть. Число после 0. int drob = (int)drob_ch; double des=0; for(int i=l;i>0;i--) { des += ((drob/Math.pow(10,i))%Math.pow(10,l-i))*Math.pow(3,-(l-i+1)); //определяем след число и умножаем его на 3^-(l-i+1) . Где -(l-i+1) будет -1, -2 и т.д. }
String dr = ""; int a; for(int i=0;i<20;i++) { drob_ch = drob_ch * 12;//12 a = (int)(drob_ch); drob_ch = drob_ch - a; } System.out.println(String.valueOf(Integer.toString(r, 12) + + des));//12 } public static void main(String[] args) { Main obj = new Main(); obj.fromFourToTwelve(); }
}
|
Ошибки:
| Цитата | Wrong input Exception in thread "main" java.lang.NumberFormatException: For input string: "java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\.][decimal separator=\,][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Q∞\E]" at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224) at java.lang.Double.parseDouble(Double.java:510) at laba12_architecture_drob.Main.fromFourToTwelve(Main.java:19) at laba12_architecture_drob.Main.main(Main.java:49) Java Result: 1 |
|