2015-09-18 3 views
1

Я работаю над этим часами, и я просмотрел весь этот сайт, чтобы увидеть, может быть, у кого-то было что-то подобное, и я не могу найти ничего, что поможет. Эта программа будет запускаться и преобразовывать шестнадцатеричный номер в десятичное число, и из того, что я могу сказать, что исключения работают. Тем не менее, у меня есть ошибка компиляции строк 34 и 35, операторы if с исключениями (эти две строки - это то, что преподаватель сказал мне заполнить, и у меня есть более чем трижды проверено, было ли это именно то, как она написала) Я вижу, что ошибка связана с круглыми скобками, но независимо от того, как и где я их перемещаю или удаляю, я не могу заставить эту ошибку уйти. Это то, что у меня есть до сих пор.numberFormatException ошибка компиляции

/* This program converts a hex number to a decimal number with exceptions 
included. 
    @author Sarah 
date: 9/17/2015 
*/ 
import java.util.Scanner; 
public class NumberFormatException12_6 { 
    public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); //create scanner 

    //prompt the user to enter a hex string 
    System.out.println("Enter a hex number: "); 
    //get hex string 
    String hex = input.nextLine(); 

    System.out.println("The decimal value for hex number " + hex + " is: " 
    + hexToDecimal(hex.toUpperCase())); 
    } 
    public static int hexToDecimal(String hex) { 
     int decimalValue = 0; 
     for(int i = 0; i < hex.length(); i++) { 
      char hexChar = hex.charAt(i); 
      try { 
      decimalValue = decimalValue * 16 + hexCharToDecimal(hexChar); 
     } 
      catch (Exception ex) { 
       System.out.println("Not a valid hex number"); 
       System.exit(0); 
       } 
     } 
     return decimalValue; 
    } 
    public static int hexCharToDecimal(char ch) throws java.lang.NumberFormatException { 
     if((ch >='G' ||(ch < '0') throw new NumberFormatException("Not a valid hex number!"); 
     if((ch>=':'&& (ch<='@')throw new NumberFormatException("Not a valid hex number!"); 
     if (ch >= 'A' && ch <= 'F'){ 
      return 10 + ch - 'A'; 
     } 
     else {//ch is '0', '1',...or'9' 
      return ch - '0'; 
     } 
    } 
} 
+0

Вы не нашли закрытие) в конце второго, если заявление. –

+0

Оба утверждения. Тройка проверена? В самом деле? –

+0

Да, действительно. Это моя четвертая неделя в моем курсе Java. Я опубликовал то, что она сказала мне, что мне нужно добавить, и это было неправильно. Я могу показать, что у нее было, если это действительно необходимо. – sarahm

ответ

1

Проверьте круглые скобки.

Оно должно быть:

if((ch >='G') ||(ch < '0')) throw new NumberFormatException("Not a valid hex number!"); 
    if((ch>=':') && (ch<='@')) throw new NumberFormatException("Not a valid hex number!"); 
+0

Спасибо вам большое! Я думал, что попробовал это, но, видимо, я этого не сделал. Я думаю, что я попытался добавить дополнительный после «0», но я забыл его после «G» ... в любом случае, вы мой герой! – sarahm

Смежные вопросы