Преобразуйте следующую строку сканера в Int и убедитесь, что введенный текст является числом - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь преобразовать следующую строку сканера в Int и проверить, что введенный текст является числом, если не система счисления, то это не число, а если число, то оно преобразуется в int и делится на десять.

Если я не проверяю условие в коде, код выполняется так, как он должен. Но если текст введен, он вычисляет значение индекса символов.

Если условие существует, то для каждого числа выполняется вычисление вместо суммирования числа Перед выполнением вычисления, но оно не рассчитывает значение индекса других символов.

Без проверки состояния:

    Scanner inputtext = new Scanner(System.in); 

    System.out.print("Mata in ett tal: ");
    String number =    inputtext.next();  //Här matar användaren in text.              
    int sum = 0;
    double number2 = 10.0;

    for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.

    sum *= 10;
    sum += (int) number.charAt(i)-(int)'0'; 
    }   

    System.out.println("Resultat: " + sum); //Här matas talet ut.
    System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.


  }

}

При проверке:

    Scanner inputtext = new Scanner(System.in); 

    System.out.print("Mata in ett tal: ");
    String number =    inputtext.next();  //Här matar användaren in text.              
    int sum = 0;
    double number2 = 10.0;

    for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.
    char ch = number.charAt(i);

    if (ch == '0' || ch == '1' || ch == '2' || ch == '3' || ch == '4' ||  ch == '5' || ch == '6'|| ch == '7'|| ch == '8'|| ch == '9'){ 
    sum *= 10;
    sum += (int) number.charAt(i)-(int)'0';

    } else { 
    System.out.println("Detta är inte ett tal");
    break; 
    }
    System.out.println("Resultat: " + sum); //Här matas talet ut.
    System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.            
   }

}

}

Я ожидаю, что если введена строка, содержащая числа, то вычисление выполняется, если добавляются другие символы, то пользователю сообщают, что это не число

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Вы можете использовать методы из Character:

  • Character.isDigit
  • Character.isLetter
  • Character.isLetterOrDigit

Используя это, выполните итерацию по строке и проверьте, являются ли все символы цифрами или нет.

0 голосов
/ 03 апреля 2019

Также помните, что «// d» обозначает цифру, поэтому, если вы хотите, чтобы она сканировала только цифры, вы можете использовать ее.Я знаю, что это мало что объясняет, но я подумал, что напоминание может помочь.

...