проверка целого числа в строке (java zybooks) - PullRequest
0 голосов
/ 27 апреля 2020

Здравствуйте, первый пост здесь, надеюсь, я все делаю правильно. В настоящее время я застрял в проблеме выяснения, если все в строке целые числа или нет. Мне удалось получить «да» для каждого проверенного символа строки, но каждый раз, когда он проходит по каждому символу в строке, я получаю новое «да» и мне нужно просто «да», если КАЖДЫЙ символ в строке является целым числом.

import java.util.Scanner; 

public class LabProgram {
public static void main(String[] args) {
  Scanner scnr = new Scanner(System.in);
  String userString;
  int i;

  userString = scnr.next();

  for (i = 0; i < userString.length(); ++i) {
     if (Character.isDigit(i) == true) {

     }
     System.out.print("yes");
  }      
}
}

Если я введу «1995», то у меня будет «yesyesyesyes», а мне нужно просто «да».

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Проблема в вашем коде заключается в том, что System.out.println находится внутри для l oop, поэтому выводом является "yesyesyesyes" для строки из четырех длин.

В этом случае вы можете предположить, что каждый символ в строке является ди git и проверять каждый, пока не найдете тот, который не является ди git, давайте использовать время:

    String word = "1992";
    boolean isDigit = true;
    int i = 0;

    while (i < word.length() && isDigit) {
        isDigit = Character.isDigit(word.charAt(i));
        i++;
    }

    if(isDigit) {
        System.out.println("yes");
    }

Полагаю, ваш код предназначен для класса, поэтому приведенного выше примера должно быть достаточно, но вы также можете использовать более функциональный подход, например:

    if(word.chars().allMatch(Character::isDigit)) {
        System.out.println("yes");
    }
0 голосов
/ 27 апреля 2020

Используя Apache Comms lang, вы можете использовать StringUtils.isNumeric(yourString) Это вернет логическое значение.

ИЛИ

, если вы хотите сделать это по-своему, попробуйте это

  userString = scnr.next();
  boolean isStringNumeric=true;

  for (i = 0; i < userString.length(); ++i) {
     isStringNumeric = Character.isDigit(userString[i]);
     if (!isStringNumeric) {
         break;
     }
  } 
 if(isStringNumeric){
    System.out.println("Yes");
} else{
     System.out.println("No");   
}
...