사용중인 언어가 무엇인지 알 수 없습니다.
하지만 연수생, 내가 예 도움을 당신이 문제를 해결하기 위해 희망했을 때이 내가 과거에 한 예입니다
더 큰 수를 if
문을 계속 추가 할 수 있습니다 ..
private static String[] tensNumberNameArray = { "", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety" };
private static String[] singleWordNumberNameArray = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten",
"eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen" };
private static Map<String, String> numberNameMap = new HashMap<>();
static {
numberNameMap.put("zero", "0");
numberNameMap.put("one", "1");
numberNameMap.put("two", "2");
numberNameMap.put("three", "3");
numberNameMap.put("four", "4");
numberNameMap.put("five", "5");
numberNameMap.put("six", "6");
numberNameMap.put("seven", "7");
numberNameMap.put("eight", "8");
numberNameMap.put("nine", "9");
numberNameMap.put("ten", "10");
numberNameMap.put("eleven", "11");
numberNameMap.put("twelve", "12");
numberNameMap.put("thirteen", "13");
numberNameMap.put("fourteen", "14");
numberNameMap.put("fifteen", "15");
numberNameMap.put("sixteen", "16");
numberNameMap.put("seventeen", "17");
numberNameMap.put("eighteen", "18");
numberNameMap.put("nineteen", "19");
numberNameMap.put("twenty", "20");
numberNameMap.put("thirty", "30");
numberNameMap.put("forty", "40");
numberNameMap.put("fifty", "50");
numberNameMap.put("sixty", "60");
numberNameMap.put("seventy", "70");
numberNameMap.put("eighty", "80");
numberNameMap.put("ninety", "90");
}
public static void main(String[] args) {
String path = "c:/num.txt";
try (PrintWriter numberWriter = new PrintWriter(new File(path)); Scanner numberReader = new Scanner(new File(path))) {
for (int i = 0; i < 10000; i ++) {
numberWriter.println(numberToSentence(i));
numberWriter.flush();
}
while (numberReader.hasNext()) {
System.out.println(sentenceToNumber(numberReader.nextLine()));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static String numberToSentence(Integer num) {
if (num != 0) {
if (num > 0 && num < 20) {
return singleWordNumberNameArray[num];
} else if (num > 19 && num < 100) {
return tensNumberNameArray[num/10] + " " + (num % 10 == 0 ? "" : numberToSentence(num % 10));
} else if (num > 99 && num < 1000) {
return singleWordNumberNameArray[num/100] + " hundred " + (num % 100 == 0 ? "" : "and " + numberToSentence(num % 100));
} else if (num > 999 && num < 10000) {
return singleWordNumberNameArray[num/1000] + " thousand " + (num % 1000 == 0 ? "" : "and " + numberToSentence(num % 1000));
}
} else {
return singleWordNumberNameArray[num];
}
return "";
}
public static int sentenceToNumber(String numStr) {
String[] numParts = numStr.split(" and ");
StringBuilder integerNum = new StringBuilder("");
for (String part : numParts) {
String[] partIsParts = part.split(" ");
if (part.contains("thousand")) {
integerNum.append(numberNameMap.get(partIsParts[0]));
integerNum.append("000");
} else if (part.contains("hundred")) {
if (integerNum.length() == 0) {
integerNum.append(numberNameMap.get(partIsParts[0]) + "00");
} else {
integerNum.setCharAt(integerNum.length() - 3, numberNameMap.get(partIsParts[0]).charAt(0));
}
} else {
if (integerNum.length() == 0) {
if (part.split(" ").length == 2) {
integerNum.append(numberNameMap.get(partIsParts[0]));
integerNum.setCharAt(integerNum.length() - 1, numberNameMap.get(partIsParts[1]).charAt(0));
} else {
integerNum.append(numberNameMap.get(partIsParts[0]));
}
} else if (part.split(" ").length == 2) {
integerNum.setCharAt(integerNum.length() - 2, numberNameMap.get(partIsParts[0]).charAt(0));
integerNum.setCharAt(integerNum.length() - 1, numberNameMap.get(partIsParts[1]).charAt(0));
} else if ("zero one two three four five six seven eight nine".contains(part)) {
integerNum.deleteCharAt(integerNum.length() - 1);
integerNum.append(numberNameMap.get(partIsParts[0]));
} else {
integerNum.deleteCharAt(integerNum.length() - 1);
integerNum.deleteCharAt(integerNum.length() - 1);
integerNum.append(numberNameMap.get(partIsParts[0]));
}
}
}
return Integer.parseInt(integerNum.toString());
}
문장 대 숫자 기능을 작성한 다음 문제가있는 단계를 구체적으로 물어보십시오. – tkruse
질문 : 당신이 기대하는 범위가 얼마나 큰가요? – Annonymous177
@Ebraheem Alrabee의 방법을 권하고 싶을 때 작 으면. 수백 개에 들어가기에는 너무 크면 관리하기에는 너무 많을 것입니다. '100'은'seratus ', 200은'Dua Ratus', 기술적으로는 번호 매기기에서 패턴을 찾는 것이 좋습니다. 대부분의 언어로 전화를 걸 때 패턴을 찾을 수 있습니다. 표본 크기가 커질 때 추천하는 것은 정규 표현식을 사용하는 것입니다. (성가신 일입니다.) 문자열을'stringtokenizer'와 비교하는 것입니다. – Annonymous177