//Edit: C# ครับ โทษที
//โปรแกรมจะทำงานแบบ แปลงตัวเลขให้เป็นคำอ่าน เช่นพิมพ์ 1000 ก็จะออกมาเป็น หนึ่งพันบาท นะครับ
// ลองใช้โปรแกรมแปลงแล้ว มันก็รันไม่ได้ครับ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ReadNumber
{
public class cReader
{
public string bahtText(double input)
{
string strInput = input.ToString();
string a;
int len;
int digit;
string output = string.Empty;
do{
a = strInput.Substring(0,1);
len = strInput.Length;
strInput = strInput.Substring(1,len -1);
digit = (len - 1);
digit = (digit % 6 == 0 ? digit : digit % 6); /* เอาไว้คิดหลักล้าน ยัง bug อยู่ถ้าไม่ใช้ comment ทิ้งไปนะ */
output += readValue(digit, Convert.ToInt32(a), (input < 10 ? true : false));
output += readDigit(digit);
} while (strInput != string.Empty);
output += " บาท";
return output;
}
public string readValue(int digit, int value,bool zerodigit)
{
switch (value)
{
case 0: return "";
case 1: return (digit == 0 ? (zerodigit ?"หนึ่ง" : "เอ็ด") : (digit == 1 ? "" : "หนึ่ง"));
case 2: return (digit == 1 ? "ยี่" : "สอง");
case 3: return "สาม";
case 4: return "สี่";
case 5: return "ห้า";
case 6: return "หก";
case 7: return "เจ็ด";
case 8: return "เป็ด";
case 9: return "เก้า";
default: return "";
}
}
public string readDigit(int digit)
{
switch (digit)
{
case 0: return "";
case 1: return "สิบ";
case 2: return "ร้อย";
case 3: return "พัน";
case 4: return "หมื่น";
case 5: return "แสน";
case 6: return "ล้าน";
default : return "";
}
}
}
}
จากโค๊ดนี้จะแปลงภาษา C++ ให้เป็น Java ได้อย่างไรครับ?
//โปรแกรมจะทำงานแบบ แปลงตัวเลขให้เป็นคำอ่าน เช่นพิมพ์ 1000 ก็จะออกมาเป็น หนึ่งพันบาท นะครับ
// ลองใช้โปรแกรมแปลงแล้ว มันก็รันไม่ได้ครับ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ReadNumber
{
public class cReader
{
public string bahtText(double input)
{
string strInput = input.ToString();
string a;
int len;
int digit;
string output = string.Empty;
do{
a = strInput.Substring(0,1);
len = strInput.Length;
strInput = strInput.Substring(1,len -1);
digit = (len - 1);
digit = (digit % 6 == 0 ? digit : digit % 6); /* เอาไว้คิดหลักล้าน ยัง bug อยู่ถ้าไม่ใช้ comment ทิ้งไปนะ */
output += readValue(digit, Convert.ToInt32(a), (input < 10 ? true : false));
output += readDigit(digit);
} while (strInput != string.Empty);
output += " บาท";
return output;
}
public string readValue(int digit, int value,bool zerodigit)
{
switch (value)
{
case 0: return "";
case 1: return (digit == 0 ? (zerodigit ?"หนึ่ง" : "เอ็ด") : (digit == 1 ? "" : "หนึ่ง"));
case 2: return (digit == 1 ? "ยี่" : "สอง");
case 3: return "สาม";
case 4: return "สี่";
case 5: return "ห้า";
case 6: return "หก";
case 7: return "เจ็ด";
case 8: return "เป็ด";
case 9: return "เก้า";
default: return "";
}
}
public string readDigit(int digit)
{
switch (digit)
{
case 0: return "";
case 1: return "สิบ";
case 2: return "ร้อย";
case 3: return "พัน";
case 4: return "หมื่น";
case 5: return "แสน";
case 6: return "ล้าน";
default : return "";
}
}
}
}