数値のみ抽出


質問する


文字列が指定され、アルファベットと数値が含まれている場合は、数値のみが抽出され、自然数が順番に作成されます.生成した自然数とその自然数の約数を出力します.「t 0 e 0 a 1 c 2 her」からのみ数値を抽出する場合は0、0、1、および2であり、自然数を作成する場合は12である.すなわち,自然デジタル化では1位0を無視する.
出力出力は12で、次の行には約12の数字が出力されます.
抽出によって作成された自然数は10000000を超えない.
入力例
g0en2Ts8eSoft
出力例
28
6

答え

public class problem06 {

	public static void main(String[] args) {
		 String a = "g0en2Ts8eSoft";
		 String result = method(a);
		 String result2 = method2(a);
		 
		 System.out.println(result);
		 System.out.println(result2);
	}
	
	//첫 번째 답
	public static String method(String a) {
		String result = "";
		
		int num = 0;
		for(int i=0; i<a.length(); i++) {
			char b = a.charAt(i);
			if(b>='0'&& b<='9') {
				num = num*10+(b-'0');  //기존의 값을 10 곱해주면 됨. 
			}
		}
		
		int count = 0;
		
		for(int i=1; i<=num; i++) {
			if(num%i==0)
				count++;
		}
		
		result = num+"\n"+count;
		
		return result;
		
	}
	
	//두 번째 답
	public static String method2(String a) {
		String result = "";
		
		String number = "";
		for(int i=0; i<a.length(); i++) {
			char b = a.charAt(i);
			if(b>='0'&& b<='9') {
           		//Char를 이어붙여 String만듦
				number = number+Character.toString(b); 
			}
		}
        
		//숫자로 만들면 자동적으로 028이 28이 된다.	
		int num = Integer.parseInt(number); 
        
		int count = 0;
		
		for(int i=1; i<=num; i++) {
			if(num%i==0)
				count++;
		}
		
		result = num+"\n"+count;
		
		return result;
		
	}

}