2017-02-02 2 views
-2

문제가있어서 조언이 필요합니다. int을 입력으로 사용하고 숫자에 숫자 8 (예 : 18, 808)이 포함되어 있으면 true를 반환하는 부울 메서드 hasEight()을 작성해야합니다.숫자에 특정 숫자가 포함되어 있는지 확인하는 방법? (Java 사용)

"문자열 변환 방법"을 사용하고 싶지 않습니다.

.................................

내가 한 일 :

import java.util.Scanner; 

public class Verificare { 

    public static boolean hasEight(int numarVerificat) { 
     int rest = numarVerificat % 10; 
     return rest == 8; 
    } 

    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Introduceti numarul pentru verificare: "); 
     int numar = keyboard.nextInt(); 
     Verificare.hasEight(numar); 
     System.out.println("Afirmatia este: " + Verificare.hasEight(numar)); 

     keyboard.close(); 
    } 

} 
+3

이 숙제가 있습니까? 그렇다면 태그를 지정하여 지금까지 해본 내용을 표시하고 어디서 붙어 있는지 설명 할 수 있습니다. –

+3

[정수의 다른 자릿수를 얻는 방법?] 가능한 복제본 (http://stackoverflow.com/questions/3389264/how-to-get-the-separate-digits-of-an-int-number) –

+3

숫자 '808'은 무엇입니까? 십진법의 권리? 그래서 그것은'8x10^2 + 0x10^1 + 8x10^0'입니다. 그래서; 그렇다면 어떻게 개별적으로 각 자릿수에 액세스 할 수 있습니까? –

답변

2

문자열 변환 방법을 사용하지 않으려면이 방법을 사용할 수 있습니다.

public bool hasEight(int number) 
{ 
     while(number > 0) 
     { 
      if(number % 10 == 8) 
       return true; 

      number=number/10; 
     } 
     return false; 
} 
+0

도움 주셔서 감사합니다. 우디에게 당신의 충고를 사용했습니다. –

1

아래 기능을 사용하십시오.

boolean hasEight(int num) { 
    int rem; 
    while (num > 0) { 
     rem = num % 10; 
     if (rem == 8) 
      return true; 
     num = num/10; 
    } 
    return false; 
} 

루프의 모든 반복에서 번호의 마지막 숫자가 검색됩니다 (10으로 나눌 때 나머지 숫자). 8이면 이 반환됩니다. 그렇지 않으면 숫자를 10으로 나누고 (정수로 나누어 마지막 숫자가 제거됨) 다른 반복이 시작됩니다. 모든 자릿수 (8 자릿수)를 확인하면 숫자가 0이되고 루프가 중지됩니다.

+0

도움 주셔서 감사합니다. 나는 당신의 충고를 사용했다 @Krisha Teja –

관련 문제