how convert java string int tutorial with examples
이 자습서에서는 코드 예제와 함께 Integer.parseInt 및 Integer.ValueOf 메서드를 사용하여 Java String을 Integer로 변환하는 방법을 설명합니다.
Java String을 int 값으로 변환하는 데 사용되는 다음 두 가지 Integer 클래스 정적 메서드를 다룹니다.
- Integer.parseInt ()
- Integer.valueOf ()
학습 내용 :
자바 문자열을 정수로 변환
숫자에 대해 어떤 종류의 산술 연산을 수행해야하지만이 숫자 값은 문자열 형식으로 제공되는 시나리오를 고려해 보겠습니다. 웹 페이지의 텍스트 필드 또는 웹 페이지의 텍스트 영역에서 오는 텍스트로 숫자를 검색한다고 가정 해 보겠습니다.
이러한 시나리오에서는 먼저 정수 형식으로 숫자를 검색하기 위해이 문자열을 변환해야합니다.
예를 들어, 2 개의 숫자를 더하려는 시나리오를 생각해 봅시다. 이러한 값은 웹 페이지에서 '300'및 '200'과 같은 텍스트로 검색되며이 숫자에 대해 산술 연산을 수행하려고합니다.
샘플 코드를 통해 이해해 보겠습니다. 여기서는“300”과“200”2 개의 숫자를 더해 변수‘c’에 할당하려고합니다. 'c'를 인쇄 할 때 콘솔의 출력은 '500'으로 예상됩니다.
package com.softwaretestinghelp; public class StringIntDemo{ public static void main(String() args) { //Assign text '300' to String variable String a='300'; //Assign text '200' to String variable String b='200'; //Add variable value a and b and assign to c String c=a+b; //print variable c System.out.println('Variable c Value --->'+c);//Expected output as 500 } } Here is the program Output : Variable c Value --->300200
그러나 위의 프로그램에서 콘솔에 인쇄 된 실제 출력은
‘변수 c 값 —> 300200’ .
이 출력물을 인쇄하는 이유는 무엇입니까?
이에 대한 대답은 a + b를했을 때 '+'연산자를 연결로 사용한다는 것입니다. 그래서 c = a + b; Java는 문자열 a와 b를 연결합니다. 즉, 두 문자열 '300'과 '200'을 연결하고 인쇄합니다. '300200'.
따라서 이것은 두 개의 문자열을 추가하려고 할 때 발생합니다.
그렇다면이 두 숫자를 더하려면 어떻게해야할까요?
이를 위해 먼저이 문자열을 숫자로 변환 한 다음이 숫자에 대해 산술 연산을 수행해야합니다. Java String을 int로 변환하기 위해 Java Integer 클래스에서 제공하는 다음 메소드를 사용할 수 있습니다.
- Integer.parseInt ()
- Integer.valueOf ()
이러한 방법을 하나씩 자세히 살펴 보겠습니다.
# 1) Java Integer.parseInt () 메서드 사용
parseInt () 메서드는 Integer 클래스에서 제공합니다. Integer 클래스는 객체에서 기본 유형 int의 값을 래핑하므로 Wrapper 클래스라고합니다.
아래에서 메서드 서명을 살펴 보겠습니다.
public static int parseInt (String str) throws NumberFormatException
public static Integer valueOf (String str) throws NumberFormatException
이것은 전달 된 String 객체에 의해 지정된 값을 가진 Integer 클래스의 객체를 반환하는 Integer 클래스에서 제공하는 정적 메서드입니다. 여기서 전달 된 인수의 해석은 부호있는 십진 정수로 수행됩니다.
이것은 parseInt (java.lang.String) 메소드에 전달 된 인수와 동일합니다. 반환 된 결과는 String에 지정된 정수 값을 나타내는 Integer 클래스 개체입니다. 간단히 말해서 valueOf () 메서드는 다음 값과 같은 Integer 객체를 반환합니다.
new Integer (Integer.parseInt (str))
여기서 'str'매개 변수는 정수 표현을 포함하는 문자열이고 메소드는 메소드에서 'str'로 표시된 값을 보유하는 Integer 객체를 반환합니다.
이 메서드는 예외를 throw합니다. NumberFormatException 문자열에 구문 분석 가능한 정수가 포함되지 않은 경우.
부호가없는 문자열에 대한 Integer.parseInt () 메서드
이전 샘플에서 본 것과 동일한 Java 프로그램에서이 Integer.parseInt () 메서드를 사용하는 방법을 이해해 보겠습니다.
package com.softwaretestinghelp; /** * This class demonstrates sample code to convert String to int Java program * using Integer.parseInt() method using String having decimal digits without * ASCII sign i.e. plus + or minus - * */ public class StringIntDemo { public static void main(String() args) { //Assign text '300' to String variable a String a='300'; //Pass a i.e.String “300” as a parameter to parseInt() //to convert String 'a' value to integer //and assign it to int variable x int x=Integer.parseInt(a); System.out.println('Variable x value --->'+x); //Assign text '200' to String variable b String b='200'; //Pass b i.e.String “200” as a parameter to parseInt() //to convert String 'b' value to integer //and assign it to int variable y int y=Integer.parseInt(b); System.out.println('Variable y value --->'+y); //Add integer values x and y i.e.z = 300+200 int z=x + y; //convert z to String just by using '+' operator and appending '' String c=z + ''; //Print String value of c System.out.println('Variable c value --->'+c); } }
다음은 프로그램 출력입니다.
가변 x 값 —> 300
변수 및 값-> 200
가변 c 값 —> 500
따라서 이제 원하는 출력 즉, 텍스트로 표현되는 두 숫자의 합계를 int 값으로 변환 한 다음이 숫자에 대해 추가 작업을 수행하여 얻을 수 있습니다.
부호가있는 문자열에 대한 Integer.parseInt () 메서드
위의 Integer.parseInt () 메서드에 대한 설명에서 볼 수 있듯이 첫 번째 문자는 음수 값 표시를위한 ASCII 마이너스 기호 '-'또는 양수 표시를위한 ASCII 플러스 부호 '+'가 될 수 있습니다. 값. 음의 값으로 동일한 프로그램을 시도해 봅시다.
‘+’및‘-‘와 같은 값과 부호가있는 샘플 프로그램을 살펴 보겠습니다.
'+75'및 '-75000'과 같은 부호있는 문자열 값을 사용하고이를 정수로 파싱 한 다음 비교하여 다음 두 숫자 사이에서 더 큰 숫자를 찾습니다.
package com.softwaretestinghelp; /** * This class demonstrates sample code to convert string to int Java * program using Integer.parseInt() method * on string having decimal digits with ASCII signs i.e. plus + or minus - * @author * */ public class StringIntDemo1 { public static void main(String() args) { //Assign text '75' i.e.value with ‘+’ sign to string variable a String a='+75'; //Pass a i.e.String “+75” as a parameter to parseInt() //to convert string 'a' value to integer //and assign it to int variable x int x =Integer.parseInt(a); System.out.println('Variable x value --->'+x); //Assign text '-75000' i.e.value with ‘-’ sign to string variable b String b='-75000'; //Pass b i.e.String “-75000” as a parameter to parseInt() //to convert string 'b' value to integer //and assign it to int variable y int y = Integer.parseInt(b); System.out.println('Variable y value --->'+y); //Get higher value between int x and y using Math class method max() int maxValue = Math.max(x,y); //convert maxValue to string just by using '+' operator and appending '' String c = maxValue + ''; //Print string value of c System.out.println('Larger number is --->'+c); }
다음은 프로그램 출력입니다.
가변 x 값 —> 75
변수 및 값->-75000
더 큰 숫자는 —> 75입니다.
선행 0이있는 문자열의 Integer.parseInt () 메서드
어떤 경우에는 선행 0이있는 숫자에 대해서도 산술 연산을해야합니다. Integer.parseInt () 메서드를 사용하여 숫자 앞에 0이있는 문자열을 정수 값으로 변환하는 방법을 살펴 보겠습니다.
예를 들어, 일부 금융 도메인 소프트웨어 시스템에서는 앞에 0이있는 계좌 번호 또는 금액을 갖는 것이 표준 형식입니다. 마찬가지로 다음 샘플 프로그램에서는 이자율과 정기 예금 금액을 이용하여 정기 예금 금액의 만기 금액을 계산합니다.
여기서 금액은 선행 0을 사용하여 지정됩니다. 선행 0이있는 이러한 문자열 값은 Integer를 사용하여 정수 값으로 구문 분석됩니다.
아래 프로그램에서 볼 수있는 parseInt () 메서드 :
package com.softwaretestinghelp; /** * This class demonstrates sample program to convert string with leading zeros to int java * using Integer.parseInt() method * * @author * */ public class StringIntDemo2{ public static void main(String() args) { //Assign text '00010000' i.e.value with leading zeros to string variable savingsAmount String fixedDepositAmount='00010000'; //Pass 0010000 i.e.String “0010000” as a parameter to parseInt() //to convert string '0010000' value to integer //and assign it to int variable x int fixedDepositAmountValue = Integer.parseInt(fixedDepositAmount); System.out.println('You have Fixed Deposit amount --->'+ fixedDepositAmountValue+' INR'); //Assign text '6' to string variable interestRate String interestRate = '6'; //Pass interestRate i.e.String “6” as a parameter to parseInt() //to convert string 'interestRate' value to integer //and assign it to int variable interestRateVaue int interestRateValue = Integer.parseInt(interestRate); System.out.println('You have Fixed Deposit Interst Rate --->' + interestRateValue+'% INR'); //Calculate Interest Earned in 1 year tenure int interestEarned = fixedDepositAmountValue*interestRateValue*1)/100; //Calcualte Maturity Amount of Fixed Deposit after 1 year int maturityAmountValue = fixedDepositAmountValue + interestEarned; //convert maturityAmount to string using format()method. //Use %08 format specifier to have 8 digits in the number to ensure the leading zeroes String maturityAmount = String.format('%08d', maturityAmountValue); //Print string value of maturityAmount System.out.println('Your Fixed Deposit Amount on maturity is --->'+ maturityAmount+ ' INR'); } }
다음은 프로그램 출력입니다.
고정 입금액 —> 10000 INR
고정 예금 이자율 —> 6 % INR
만기일 고정 예금 금액은 —> 00010600 INR입니다.
따라서 위의 샘플 프로그램에서는 parseInt () 메서드에‘00010000’을 전달하고 값을 인쇄합니다.
String fixedDepositAmount='00010000'; int fixedDepositAmountValue = Integer. parseInt (fixedDepositAmount); System. out .println('You have Fixed Deposit amount --->'+ fixedDepositAmountValue+' INR');
고정 입금액 —> 10000 INR이 있으므로 콘솔에 값이 표시됩니다.
여기서 정수 값으로 변환하는 동안 선행 0이 제거됩니다.
그런 다음 고정 예금 만기 금액을 '10600'정수 값으로 계산하고 % 08 형식 지정자를 사용하여 결과 값을 형식화하여 선행 0을 검색했습니다.
String maturityAmount = String. format ('%08d', maturityAmountValue);
형식화 된 문자열의 값을 인쇄하면
System. out .println('Your Fixed Deposit Amount on maturity is --->'+ maturityAmount+ ' INR');
출력이 콘솔에 인쇄되는 것을 볼 수 있습니다. 만기일 고정 예금 금액은 —> 00010600 INR입니다.
NumberFormatException
설명에서 Integer.parseInt () method, 우리는 또한 parseInt () 메서드에 의해 던져진 예외를 보았습니다. NumberFormatException입니다.
이 메서드는 예외를 발생시킵니다. NumberFormatException 문자열에 구문 분석 가능한 정수가 포함되지 않은 경우.
따라서이 예외가 발생하는 시나리오를 살펴 보겠습니다.
이 시나리오를 이해하기 위해 다음 샘플 프로그램을 살펴 보겠습니다. 이 프로그램은 사용자에게 점수를 입력하라는 메시지를 표시하고받은 등급을 반환합니다. 이를 위해 사용자가 입력 한 문자열 값을 정수 값으로 구문 분석합니다.
Package com.softwaretestinghelp; import java.util.Scanner; /** * This class demonstrates sample code to convert string to int Java * program using Integer.parseInt() method having string with non decimal digit and method throwing NumberFormatException * @author * */ public class StringIntDemo3{ private static Scanner scanner; public static void main(String() args){ //Prompt user to enter input using Scanner and here System.in is a standard input stream scanner = new Scanner(System.in); System.out.print('Please Enter the percentage you have scored:'); //Scan the next token of the user input as an int and assign it to variable precentage String percentage = scanner.next(); //Pass percentage String as a parameter to parseInt() //to convert string 'percentage' value to integer //and assign it to int variable precentageValue int percentageValue = Integer.parseInt(percentage); System.out.println('Percentage Value is --->' + percentageValue); //if-else loop to print the grade if (percentageValue>=75) { System.out.println('You have Passed with Distinction'); }else if(percentageValue>60) { System.out.println('You have Passed with Grade A'); }else if(percentageValue>50) { System.out.println('You have Passed with Grade B'); }else if(percentageValue>35) { System.out.println('You have Passed '); }else { System.out.println('Please try again '); } } }
다음은 프로그램 출력입니다.
사용자가 입력 한 두 가지 다른 입력 값으로 시도해 보겠습니다.
1. 유효한 정수 값으로
점수를 입력하세요 : 82
백분율 값은 —> 82입니다.
당신은 구별을 가지고 통과했습니다
2. InValid 정수 값으로
점수를 입력하세요 : 85a
스레드 'main'의 예외 java.lang.NumberFormatException : 입력 문자열 : '85a'
java.lang.NumberFormatException.forInputString (Unknown Source)에서
at java.lang.Integer.parseInt (Unknown Source)
at java.lang.Integer.parseInt (Unknown Source)
com.softwaretestinghelp.StringIntDemo3.main (StringIntDemo3.java:26)
따라서 프로그램 출력에서 볼 수 있듯이
# 1) 사용자가 유효한 값, 즉 82를 입력으로 입력하면 콘솔에 표시되는 출력은 다음과 같습니다.
백분율 값은 —> 82입니다.
당신은 구별을 가지고 통과했습니다
# 2) 사용자가 유효하지 않은 값 즉, 85a를 입력으로 입력하면 콘솔에 출력되는 출력은 다음과 같습니다.
점수를 입력하세요 : 85a
스레드 'main'의 예외 java.lang.NumberFormatException : 입력 문자열 : '85a'
java.lang.NumberFormatException.forInputString (Unknown Source)에서
at java.lang.Integer.parseInt (Unknown Source)
at java.lang.Integer.parseInt (Unknown Source)
com.softwaretestinghelp.StringIntDemo3.main (StringIntDemo3.java:26)
Integer.parseInt () 메서드에서 85a를 구문 분석하는 동안 java.lang.NumberFormatException이 throw됩니다. '85a'에는 십진수도 아니고 ASCII 기호 '+'또는 '-'도 아닌 문자 'a'가 있습니다. Integer.parseInt () 메서드의 정수입니다.
그래서 이것은 Java String을 int로 변환하는 방법 중 하나에 관한 것입니다. Java가 Integer.valueOf () 메서드를 사용하여 String을 int로 변환하는 다른 방법을 살펴 보겠습니다.
# 2) 정수 사용. valueOf () 메서드
valueOf () 메서드는 Integer 클래스 정적 메서드이기도합니다.
아래에서 메서드 시그니처를 살펴 보겠습니다.
public static int parseInt (String str) throws NumberFormatException
이것은 전달 된 String 객체에 의해 지정된 값을 가진 classInteger의 객체를 반환하는 Integer 클래스에서 제공하는 정적 메서드입니다. 여기서 전달 된 인수의 해석은 부호있는 십진 정수로 수행됩니다.
이것은 parseInt (java.lang.String) 메소드에 전달 된 인수와 동일합니다. 반환 된 결과는 Integer 클래스 개체가 String에 지정된 정수 값을 나타냅니다. 간단히 말해서 valueOf () 메서드는 다음 값과 같은 Integer 객체를 반환합니다. 새로운 정수 (Integer.parseInt (str))
여기서 'str'매개 변수는 정수 표현을 포함하는 문자열이고 메소드는 메소드에서 'str'로 표시된 값을 보유하는 Integer 객체를 반환합니다. 이 메서드는 예외를 throw합니다. NumberFormatException 문자열에 구문 분석 가능한 정수가 포함되지 않은 경우.
PC에서 swf 파일을 여는 방법
이 Integer.valueOf () 메서드를 사용하는 방법을 이해하겠습니다.
다음은 샘플 프로그램입니다. 이 샘플 코드는 주 3 일의 평균 기온을 계산합니다. 여기서 온도를 변환하기 위해 값은 문자열 값으로 정수 값으로 할당됩니다. 이 문자열을 정수로 변환하려면 Integer.valueOf () 메서드를 사용해 보겠습니다.
Package com.softwaretestinghelp; /** * This class demonstrates a sample program to convert string to integer in Java * using Integer.valueOf() method * on string having decimal digits with ASCII signs i.e.plus + or minus - * @author * */ public class StringIntDemo4 { public static void main(String() args) { //Assign text '-2' i.e.value with ‘-’ sign to string variable sundayTemperature String sundayTemperature= '-2'; //Pass sundayTemperature i.e.String “-2” as a parameter to valueOf() //to convert string 'sundayTemperature' value to integer //and assign it to Integer variable sundayTemperatureValue Integer sundayTemperatureValue = Integer.valueOf(sundayTemperature); System.out.println('Sunday Temperature value --->'+ sundayTemperatureValue); //Assign text '4' to string variable mondayTemperature String mondayTemperature = '4'; //Pass mondayTemperature i.e.String “4” as a parameter to valueOf() //to convert string 'mondayTemperature ' value to integer //and assign it to Integer variable mondayTemperature Integer mondayTemperatureValue = Integer.valueOf(mondayTemperature); System.out.println('Monday Temperature value --->'+ mondayTemperatureValue); //Assign text '+6' i.e.value with ‘+’ sign to string variable //tuesdayTemperature String tuesdayTemperature = '+6'; //Pass tuesdayTemperature i.e.String “+6” as a parameter to valueOf() //to convert string 'tuesdayTemperature' value to integer //and assign it to Integer variable tuesdayTemperature Integer tuesdayTemperatureValue = Integer.valueOf(tuesdayTemperature); System.out.println('Tuesday Temperature value --->'+ tuesdayTemperatureValue); //Calculate Average value of 3 days temperature //avgTEmp = (-2+4+(+6))/3 = 8/3 = 2 Integer averageTemperatureValue = (sundayTemperatureValue+mondayTemperatureValue +tuesdayTemperatureValue)/3; //convert z to string just by using '+' operator and appending '' String averageTemperature = averageTemperatureValue+''; //Print string value of x System.out.println('Average Temperature over 3 days --->'+averageTemperature); } }
다음은 프로그램 출력입니다.
일요일 온도 값 —>-2
월요일 온도 값 —> 4
화요일 온도 값 —> 6
3 일 동안의 평균 온도 —> 2
운동: 위와 같이 문자열 값을 변환 할 수 있다면 소수점이있는 문자열을 사용해 볼 수 있습니다.
예를 들어, '-2'대신 '-2.5'를 시도해 볼 수 있습니까?
위의 샘플 코드를 parseInt () 또는 valueOf () 메서드로 String sundayTemperature =“-2.5”할당하여 시도해보십시오.
힌트: 구문 분석 가능한 값에 대해 메서드 서명을 다시 읽으십시오.
대답: 위의 샘플 프로그램을 String으로 시도하면 일요일 온도 =“-2.5, parseInt () 및 valueOf ()에 대한 String 인수의 값이 ASCII 더하기‘+’또는 빼기’-‘부호 및 십진수이므로 NumberFormatException이 발생합니다.
그래서 분명히‘.’은 유효하지 않습니다. 또한이 두 메서드는 Integer 클래스에서 제공하므로 '2.5'와 같은 부동 소수점 값은 이러한 메서드에 대해 구문 분석 할 수없는 값입니다.
따라서 우리는 Java에서 String을 int로 변환하는 Integer 클래스의 두 메서드를 모두 설명했습니다.
Java에서 문자열을 Int로 변환하는 방법에 대한 FAQ
Q # 1) Java에서 String을 int로 어떻게 변환 할 수 있습니까?
대답: Java String에서 int 로의 변환은 두 가지 방법, 즉 Integer 클래스 메소드의 다음 메소드를 사용하여 수행 할 수 있습니다.
- Integer.parseInt ()
- Integer.valueOf ()
Q # 2) 정수를 어떻게 구문 분석합니까?
대답: Integer 클래스는 정수 값을 구문 분석하여 String을 int 값 즉, parseInt () 및 valueOf ()로 변환하는 데 사용되는 정적 메서드를 제공합니다.
Q # 3) parseInt () 란 무엇입니까?
대답: parseInt ()는 Integer 클래스에서 제공하는 정적 메서드로, Java String을 인수로 전달하고 정수 값을 반환하는 int 값으로 Java String을 변환하는 데 사용됩니다.
예를 들어, int x = Integer.parseInt ( '100')는 int 값 100을 반환합니다.
Q # 4) Java에서 구문 분석이란 무엇입니까?
대답: Java에서 구문 분석은 기본적으로 한 데이터 유형의 객체 값을 다른 데이터 유형으로 변환하는 것입니다. 예를 들어, Integer.valueOf (str)는 String 데이터 형의 객체 인 'str'을 Integer 데이터 형 객체로 변환합니다.
결론
이 튜토리얼에서는 다음 래퍼 클래스 Integer 정적 메서드를 사용하여 Java에서 String을 int로 변환하는 방법을 탐색했습니다.
- Integer.parseInt ()
- Integer.valueOf ()
유효하지 않은 숫자 문자열에 대해 NumberFormatException이 발생하는 경우도 다루었습니다.
추가 읽기 = >> Java에서 Integer를 Sting으로 변환하는 8 가지 방법