#7832: WA...JAVA


bluesky9007 (BryantJ)


import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class A008 {
private static Map<Integer, String> textMap = new LinkedHashMap<Integer, String>();
private static Map<Integer, String> digitMap = new LinkedHashMap<Integer, String>();

public static void main(String[] args) {
textMap.put(0, "零");
textMap.put(1, "壹");
textMap.put(2, "貳");
textMap.put(3, "參");
textMap.put(4, "肆");
textMap.put(5, "伍");
textMap.put(6, "陸");
textMap.put(7, "柒");
textMap.put(8, "捌");
textMap.put(9, "玖");
digitMap.put(0, "");
digitMap.put(1, "拾");
digitMap.put(2, "佰");
digitMap.put(3, "仟");
digitMap.put(4, "萬");
digitMap.put(5, "億");

Scanner cin = new Scanner(System.in);

while (cin.hasNext()) {
splitMath(cin.next());
}
}

public static boolean baseMath(String numberStr) {

boolean lastNumIsZero = false;

if (numberStr.length() > 4) {
System.out.println("ERROR");
return false;
}

if (Integer.parseInt(numberStr) == 0) {
System.out.println(textMap.get(0));
return false;
}
for (int i = 0; i < numberStr.length(); ++i) {
if (numberStr.charAt(i) == '0') {
boolean remainIsZero = true;
// 檢查其餘數字是否為0
for (int j = i + 1; j < numberStr.length(); ++j) {
if (numberStr.charAt(j) != '0') {
remainIsZero = false;
}
}
if (!lastNumIsZero && !remainIsZero) {
System.out.print(textMap.get(0));
lastNumIsZero = true;
}

} else if (numberStr.charAt(i) != '0') {
lastNumIsZero = false;

System.out.print(textMap.get(Integer.parseInt(String.valueOf(numberStr
.charAt(i)))) + digitMap.get(numberStr.length() - i - 1));
}
}
return true;
}

public static void splitMath(String numberStr) {
if (numberStr.length() < 5) {
baseMath(numberStr);
} else if (numberStr.length() < 9) {
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int mIndex = numberStr.length() - 4;
for (int i = 0; i < mIndex; ++i) {
mString.append(numberStr.charAt(i));
}
lString.append(numberStr.substring(mIndex));
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
} else if (numberStr.length() < 13) {
StringBuffer bString = new StringBuffer();
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int bIndex = numberStr.length() - 8;
int mIndex = numberStr.length() - 4;

for (int i = 0; i < bIndex; ++i) {
bString.append(numberStr.charAt(i));
}

for (int j = bIndex; j < mIndex; ++j) {
mString.append(numberStr.charAt(j));
}

lString.append(numberStr.substring(mIndex));

if (baseMath(bString.toString())) {
System.out.print(digitMap.get(5));
}
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
}
}
}

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class A008 {
private static Map<Integer, String> textMap = new LinkedHashMap<Integer, String>();
private static Map<Integer, String> digitMap = new LinkedHashMap<Integer, String>();

public static void main(String[] args) {
textMap.put(0, "零");
textMap.put(1, "壹");
textMap.put(2, "貳");
textMap.put(3, "參");
textMap.put(4, "肆");
textMap.put(5, "伍");
textMap.put(6, "陸");
textMap.put(7, "柒");
textMap.put(8, "捌");
textMap.put(9, "玖");
digitMap.put(0, "");
digitMap.put(1, "拾");
digitMap.put(2, "佰");
digitMap.put(3, "仟");
digitMap.put(4, "萬");
digitMap.put(5, "億");

Scanner cin = new Scanner(System.in);

while (cin.hasNext()) {
splitMath(cin.next());
}
}

public static boolean baseMath(String numberStr) {

boolean lastNumIsZero = false;

if (numberStr.length() > 4) {
System.out.println("ERROR");
return false;
}

if (Integer.parseInt(numberStr) == 0) {
System.out.println(textMap.get(0));
return false;
}
for (int i = 0; i < numberStr.length(); ++i) {
if (numberStr.charAt(i) == '0') {
boolean remainIsZero = true;
// 檢查其餘數字是否為0
for (int j = i + 1; j < numberStr.length(); ++j) {
if (numberStr.charAt(j) != '0') {
remainIsZero = false;
}
}
if (!lastNumIsZero && !remainIsZero) {
System.out.print(textMap.get(0));
lastNumIsZero = true;
}

} else if (numberStr.charAt(i) != '0') {
lastNumIsZero = false;

System.out.print(textMap.get(Integer.parseInt(String.valueOf(numberStr
.charAt(i)))) + digitMap.get(numberStr.length() - i - 1));
}
}
return true;
}

public static void splitMath(String numberStr) {
if (numberStr.length() < 5) {
baseMath(numberStr);
} else if (numberStr.length() < 9) {
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int mIndex = numberStr.length() - 4;
for (int i = 0; i < mIndex; ++i) {
mString.append(numberStr.charAt(i));
}
lString.append(numberStr.substring(mIndex));
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
} else if (numberStr.length() < 13) {
StringBuffer bString = new StringBuffer();
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int bIndex = numberStr.length() - 8;
int mIndex = numberStr.length() - 4;

for (int i = 0; i < bIndex; ++i) {
bString.append(numberStr.charAt(i));
}

for (int j = bIndex; j < mIndex; ++j) {
mString.append(numberStr.charAt(j));
}

lString.append(numberStr.substring(mIndex));

if (baseMath(bString.toString())) {
System.out.print(digitMap.get(5));
}
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
}
}
}


我自己在 eclipse 上測,輸入 10 ,輸出為 壹拾 無誤,
但送審後,卻出現答題狀況如下↓
WA (line:3)
答案不正確
您的答案為: 壹拾壹佰壹仟壹 ...略 正確答案為: 壹拾
有請各位大大幫忙指點一二~
#7888: Re:WA...JAVA


keygame (雨樹風清)


import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class A008 {
protected static Map textMap = new LinkedHashMap();
protected static Map digitMap = new LinkedHashMap();

public static void main(String[] args) {
textMap.put(0, "零");
textMap.put(1, "壹");
textMap.put(2, "貳");
textMap.put(3, "參");
textMap.put(4, "肆");
textMap.put(5, "伍");
textMap.put(6, "陸");
textMap.put(7, "柒");
textMap.put(8, "捌");
textMap.put(9, "玖");
digitMap.put(0, "");
digitMap.put(1, "拾");
digitMap.put(2, "佰");
digitMap.put(3, "仟");
digitMap.put(4, "萬");
digitMap.put(5, "億");

Scanner cin = new Scanner(System.in);

while (cin.hasNext()) {
splitMath(cin.next());
}
}

public static boolean baseMath(String numberStr) {

boolean lastNumIsZero = false;

if (numberStr.length() > 4) {
System.out.println("ERROR");
return false;
}

if (Integer.parseInt(numberStr) == 0) {
System.out.println(textMap.get(0));
return false;
}
for (int i = 0; i < numberStr.length(); ++i) {
if (numberStr.charAt(i) == '0') {
boolean remainIsZero = true;
// 檢查其餘數字是否為0
for (int j = i + 1; j < numberStr.length(); ++j) {
if (numberStr.charAt(j) != '0') {
remainIsZero = false;
}
}
if (!lastNumIsZero && !remainIsZero) {
System.out.print(textMap.get(0));
lastNumIsZero = true;
}

} else if (numberStr.charAt(i) != '0') {
lastNumIsZero = false;

System.out.print(textMap.get(Integer.parseInt(String.valueOf(numberStr
.charAt(i)))) + digitMap.get(numberStr.length() - i - 1));
}
}
return true;
}

public static void splitMath(String numberStr) {
if (numberStr.length() < 5) {
baseMath(numberStr);
} else if (numberStr.length() < 9) {
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int mIndex = numberStr.length() - 4;
for (int i = 0; i < mIndex; ++i) {
mString.append(numberStr.charAt(i));
}
lString.append(numberStr.substring(mIndex));
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
} else if (numberStr.length() < 13) {
StringBuffer bString = new StringBuffer();
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int bIndex = numberStr.length() - 8;
int mIndex = numberStr.length() - 4;

for (int i = 0; i < bIndex; ++i) {
bString.append(numberStr.charAt(i));
}

for (int j = bIndex; j < mIndex; ++j) {
mString.append(numberStr.charAt(j));
}

lString.append(numberStr.substring(mIndex));

if (baseMath(bString.toString())) {
System.out.print(digitMap.get(5));
}
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
}
}
}

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

public class A008 {
private static Map textMap = new LinkedHashMap();
private static Map digitMap = new LinkedHashMap();

public static void main(String[] args) {
textMap.put(0, "零");
textMap.put(1, "壹");
textMap.put(2, "貳");
textMap.put(3, "參");
textMap.put(4, "肆");
textMap.put(5, "伍");
textMap.put(6, "陸");
textMap.put(7, "柒");
textMap.put(8, "捌");
textMap.put(9, "玖");
digitMap.put(0, "");
digitMap.put(1, "拾");
digitMap.put(2, "佰");
digitMap.put(3, "仟");
digitMap.put(4, "萬");
digitMap.put(5, "億");

Scanner cin = new Scanner(System.in);

while (cin.hasNext()) {
splitMath(cin.next());
}
}

public static boolean baseMath(String numberStr) {

boolean lastNumIsZero = false;

if (numberStr.length() > 4) {
System.out.println("ERROR");
return false;
}

if (Integer.parseInt(numberStr) == 0) {
System.out.println(textMap.get(0));
return false;
}
for (int i = 0; i < numberStr.length(); ++i) {
if (numberStr.charAt(i) == '0') {
boolean remainIsZero = true;
// 檢查其餘數字是否為0
for (int j = i + 1; j < numberStr.length(); ++j) {
if (numberStr.charAt(j) != '0') {
remainIsZero = false;
}
}
if (!lastNumIsZero && !remainIsZero) {
System.out.print(textMap.get(0));
lastNumIsZero = true;
}

} else if (numberStr.charAt(i) != '0') {
lastNumIsZero = false;

System.out.print(textMap.get(Integer.parseInt(String.valueOf(numberStr
.charAt(i)))) + digitMap.get(numberStr.length() - i - 1));
}
}
return true;
}

public static void splitMath(String numberStr) {
if (numberStr.length() < 5) {
baseMath(numberStr);
} else if (numberStr.length() < 9) {
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int mIndex = numberStr.length() - 4;
for (int i = 0; i < mIndex; ++i) {
mString.append(numberStr.charAt(i));
}
lString.append(numberStr.substring(mIndex));
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
} else if (numberStr.length() < 13) {
StringBuffer bString = new StringBuffer();
StringBuffer mString = new StringBuffer();
StringBuffer lString = new StringBuffer();
int bIndex = numberStr.length() - 8;
int mIndex = numberStr.length() - 4;

for (int i = 0; i < bIndex; ++i) {
bString.append(numberStr.charAt(i));
}

for (int j = bIndex; j < mIndex; ++j) {
mString.append(numberStr.charAt(j));
}

lString.append(numberStr.substring(mIndex));

if (baseMath(bString.toString())) {
System.out.print(digitMap.get(5));
}
if (baseMath(mString.toString())) {
System.out.print(digitMap.get(4));
}
baseMath(lString.toString());
System.out.println();
}
}
}


我自己在 eclipse 上測,輸入 10 ,輸出為 壹拾 無誤,
但送審後,卻出現答題狀況如下↓
WA (line:3)
答案不正確
您的答案為: 壹拾壹佰壹仟壹 ...略 正確答案為: 壹拾
有請各位大大幫忙指點一二~