在网上搜了下,说是在javac -encoding UTF-8 *.java就Ok了。但是我加上后,又出现“非法字符”的错误。求教是怎么回事,怎么解决?
代码:import java.util.Arrays;public class Num2Rmb
{
private String[] hanArr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] unitArr = {"拾","佰","仟"}; /**
* 把一个浮点数分解成整数部分和小数部分字符串
* @param num需要被分解的浮点数
* @return分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分
*/
private String[] divide(double num)
{
//将一个浮点数强制类型转换为long,即得到它的整数部分
long zheng = (long)num;
//浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到两位小数
long xiao = Math.round((num - zheng)*100);
return new String[]{zheng + "",String.valueOf(xiao)};
}
/**
* 把一个四位的数字字符串变成汉字字符串
* @param numStr 需要被转换的四位的数字字符串
* @return 四位的数字字符串被转换成的汉字字符串
*/
private String toHanStr(String numStr)
{
String result = "";
int numLen = numStr.length();
//依次遍历数字字符串的每一位数字
for(int i = 0;i < numLen;i ++ )
{
//把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
//因此把char型数字减去48得到int型数字,例如'4'被转换成4.
int num = numStr.charAt(i) - 48;
//如果不是最后一位数字,而且数字不是零,则需要添加单位(仟、佰、拾)
if(i != numLen - 1 && num != 0)
{
result += hanArr[num] + unitArr[numLen - 2 - i];
}
//否则不要添加单位
else
{
result += hanArr[num];
}
}
return result; }
public static void main(String[] args)
{
Num2Rmb nr = new Num2Rmb();
//测试把一个浮点数分解成整数部分和小数部分
System.out.println(Arrays.toString(nr.divide(236711125.123)));
//测试把一个四位的数字字符串变成汉字字符串
System.out.println(nr.toHanStr("6109"));
}
}
代码:import java.util.Arrays;public class Num2Rmb
{
private String[] hanArr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private String[] unitArr = {"拾","佰","仟"}; /**
* 把一个浮点数分解成整数部分和小数部分字符串
* @param num需要被分解的浮点数
* @return分解出来的整数部分和小数部分。第一个数组元素是整数部分,第二个数组元素是小数部分
*/
private String[] divide(double num)
{
//将一个浮点数强制类型转换为long,即得到它的整数部分
long zheng = (long)num;
//浮点数减去整数部分,得到小数部分,小数部分乘以100后再取整得到两位小数
long xiao = Math.round((num - zheng)*100);
return new String[]{zheng + "",String.valueOf(xiao)};
}
/**
* 把一个四位的数字字符串变成汉字字符串
* @param numStr 需要被转换的四位的数字字符串
* @return 四位的数字字符串被转换成的汉字字符串
*/
private String toHanStr(String numStr)
{
String result = "";
int numLen = numStr.length();
//依次遍历数字字符串的每一位数字
for(int i = 0;i < numLen;i ++ )
{
//把char型数字转换成的int型数字,因为它们的ASCII码值恰好相差48
//因此把char型数字减去48得到int型数字,例如'4'被转换成4.
int num = numStr.charAt(i) - 48;
//如果不是最后一位数字,而且数字不是零,则需要添加单位(仟、佰、拾)
if(i != numLen - 1 && num != 0)
{
result += hanArr[num] + unitArr[numLen - 2 - i];
}
//否则不要添加单位
else
{
result += hanArr[num];
}
}
return result; }
public static void main(String[] args)
{
Num2Rmb nr = new Num2Rmb();
//测试把一个浮点数分解成整数部分和小数部分
System.out.println(Arrays.toString(nr.divide(236711125.123)));
//测试把一个四位的数字字符串变成汉字字符串
System.out.println(nr.toHanStr("6109"));
}
}
如果你在ultraedit 里面编写的,改一下ultraedit的编码格式。我前几天也碰到了这个问题,是再ultraedit里面遇到的。如果楼主不明白,可以再问,半小时内,我在线等着哈……
-encoding 后面跟上什么。
左上角 文件—另存为 打开之后,最下方有个“编码”的选项 把它换成“ANSI”
此问题可解决~~~
再看你的java源文件是什么编码,
然后决定用什么编码编译。