Integer.parseInt()를 사용하여 phonenumber를 나타내는 문자열을 사용할 수있는 int로 변환하려고합니다.() 나는 그냥있는 Integer.parseInt를 사용하여 작동하는 하드 코딩 된 문자열을 대체하려고 할 때 그래서int로 변환 할 때 Java 문자열 생성 오류가 발생했습니다.
import java.util.*;
import java.lang.Integer;
public class TelephoneNumberValidator {
public static void main(String[] args) {
final String VALID_PHONE_PATTERN = "[0-9]{3}[-| ]?[0-9]{3}[-| ]?[0-9]{4}";
final int NUMBERS_FOLLOWING_AREA_CODE = 7;
final int DECRYPTED_AREA_CODE = 212;
Scanner scanKeyboard = new Scanner(System.in);
String userInput;
do {
System.out.println("Enter a 10-digit telephone number with optional space or dash after the first and the second block of three digits >");
userInput = scanKeyboard.nextLine();
//check to see if the phone number is correct
if (!userInput.matches(VALID_PHONE_PATTERN))
{
System.out.println("The given input \" " + userInput + " \" is not valid");
}
}while (!userInput.matches(VALID_PHONE_PATTERN));
//extract int from string
String phoneJustNumbers = userInput;
phoneJustNumbers = phoneJustNumbers.replaceAll("-",""); // replaces hyphens
phoneJustNumbers = phoneJustNumbers.replaceAll(" ", "");
System.out.println("Processing encrypted number \"" + phoneJustNumbers + "\"");
//check the first 3 digits (aka area code) to see if it matches 212
int areaCode = Integer.parseInt(phoneJustNumbers);//gets area code
int placeholderForAreaCode = 111; //set 111 so that each number in area code can be accounted for
int placeholderForEntirePhoneNum = 1111111111; //set each digit to 1 so we can shift later
for (int j = 0; j <= 9; j++)
{
if ((areaCode + (placeholderForAreaCode * j) == DECRYPTED_AREA_CODE)) // we are shifting each digit by one
// to see if it matches the decrypted area code
{
System.out.println("The telephone number is \"" + (Integer.parseInt(phoneJustNumbers) * placeholderForEntirePhoneNum * j)
+ "\" with a shift value of " + j);
}
else
{
System.out.println("The telephone number \"" + userInput + "\" cannot be decrypted area code.");
}
}
}
}
: 이것은 내 코드입니다
Enter a 10-digit telephone number with optional space or dash after the first and the second block of three digits >
5558759142
Processing encrypted number "5558759142"
Exception in thread "main" java.lang.NumberFormatException: For input string: "5558759142"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:583)
at java.lang.Integer.parseInt(Integer.java:615)
at TelephoneNumberValidator.main(TelephoneNumberValidator.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Process finished with exit code 1
:
이
내가지고있어 오류입니다 . 이것은 내가 어떻게하면 내 끈을 깨끗하게하는 방법이이 일을 멈추게한다고 믿게한다. 나는 자바에 익숙하지 않아서 내가 왜 그런 짓을했는지, 내가 잘못했는지 모른다.
예. 이것이 문제였습니다. 고마워요! –