/**
* Created by IntelliJ IDEA.
* User: 厉明祥
* Date: 2006-7-6
* Time: 15:04:23
* To change this template use File | Settings | File Templates.
*/import java.io.*;public class Trans_2 { //单位
private String[] bUnit; // 基本单位 十、百、千 private String[] sUnit; // 高级单位 万、亿 private int[] sUnitNum; // 高级单位 万、亿 位数 private String[] NumberStr; // 数字-中文对照 private boolean zeroSign; // 连续零 标识 void init() {
NumberStr = new String[10];
NumberStr[0] = "零";
NumberStr[1] = "壹";
NumberStr[2] = "贰";
NumberStr[3] = "叁";
NumberStr[4] = "肆";
NumberStr[5] = "伍";
NumberStr[6] = "陆";
NumberStr[7] = "柒";
NumberStr[8] = "捌";
NumberStr[9] = "玖"; bUnit = new String[4];
bUnit[0] = "";
bUnit[1] = "拾";
bUnit[2] = "佰";
bUnit[3] = "仟"; sUnit = new String[2];
sUnit[0] = "万";
sUnit[1] = "亿"; sUnitNum = new int[2];
sUnitNum[0] = 4;
sUnitNum[1] = 8; zeroSign = true;
}
//转换
String multi(String NumStr) {
String xNumber = "";
String xSUnit = "";
String tempNumber = ""; init(); int i = 0; // 位数计数器
while (NumStr.length() > 0) { if (NumStr.length() > 4) {
tempNumber = NumStr.substring(NumStr.length() - 4);
NumStr = NumStr.substring(0, NumStr.length() - 4);
} else {
tempNumber = NumStr;
NumStr = "";
} xSUnit = "";
for (int j = sUnitNum.length - 1; j >= 0 && i > 0; j--) {
int y = i % sUnitNum[j];
if (y == 0) {
xSUnit = sUnit[j];
j = -1;
}
} for (int j = tempNumber.length() - 1; j >= 0; j--) {
int x = Integer.parseInt(tempNumber.substring(j, j + 1));
int y = (tempNumber.length() - j - 1) % 4;
if (x != 0) {
xNumber = xSUnit + xNumber;
xNumber = bUnit[y] + xNumber;
xNumber = NumberStr[x] + xNumber;
zeroSign = false;
} else {
if (!zeroSign) {
xNumber = xSUnit + NumberStr[x] + xNumber;
} else if (xSUnit.length() > 0) {
xNumber = xSUnit + xNumber;
}
zeroSign = true;
}
xSUnit = "";
} i = i + 4;
}
return xNumber;
}
//主方法程序入口 ;
public static void main(String[] args) {try
{
System.out.println("请输入要转换的数字:"); BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String s = br.readLine(); Trans_2 m = new Trans_2();
System.out.print(s + " = " + m.multi(s)); }
catch (IOException e)
{
e.printStackTrace();
}
}
}
要求:在以上程序基础上修改程序,可以输入不超过18位长度的数字,输出中文读法
* Created by IntelliJ IDEA.
* User: 厉明祥
* Date: 2006-7-6
* Time: 15:04:23
* To change this template use File | Settings | File Templates.
*/import java.io.*;public class Trans_2 { //单位
private String[] bUnit; // 基本单位 十、百、千 private String[] sUnit; // 高级单位 万、亿 private int[] sUnitNum; // 高级单位 万、亿 位数 private String[] NumberStr; // 数字-中文对照 private boolean zeroSign; // 连续零 标识 void init() {
NumberStr = new String[10];
NumberStr[0] = "零";
NumberStr[1] = "壹";
NumberStr[2] = "贰";
NumberStr[3] = "叁";
NumberStr[4] = "肆";
NumberStr[5] = "伍";
NumberStr[6] = "陆";
NumberStr[7] = "柒";
NumberStr[8] = "捌";
NumberStr[9] = "玖"; bUnit = new String[4];
bUnit[0] = "";
bUnit[1] = "拾";
bUnit[2] = "佰";
bUnit[3] = "仟"; sUnit = new String[2];
sUnit[0] = "万";
sUnit[1] = "亿"; sUnitNum = new int[2];
sUnitNum[0] = 4;
sUnitNum[1] = 8; zeroSign = true;
}
//转换
String multi(String NumStr) {
String xNumber = "";
String xSUnit = "";
String tempNumber = ""; init(); int i = 0; // 位数计数器
while (NumStr.length() > 0) { if (NumStr.length() > 4) {
tempNumber = NumStr.substring(NumStr.length() - 4);
NumStr = NumStr.substring(0, NumStr.length() - 4);
} else {
tempNumber = NumStr;
NumStr = "";
} xSUnit = "";
for (int j = sUnitNum.length - 1; j >= 0 && i > 0; j--) {
int y = i % sUnitNum[j];
if (y == 0) {
xSUnit = sUnit[j];
j = -1;
}
} for (int j = tempNumber.length() - 1; j >= 0; j--) {
int x = Integer.parseInt(tempNumber.substring(j, j + 1));
int y = (tempNumber.length() - j - 1) % 4;
if (x != 0) {
xNumber = xSUnit + xNumber;
xNumber = bUnit[y] + xNumber;
xNumber = NumberStr[x] + xNumber;
zeroSign = false;
} else {
if (!zeroSign) {
xNumber = xSUnit + NumberStr[x] + xNumber;
} else if (xSUnit.length() > 0) {
xNumber = xSUnit + xNumber;
}
zeroSign = true;
}
xSUnit = "";
} i = i + 4;
}
return xNumber;
}
//主方法程序入口 ;
public static void main(String[] args) {try
{
System.out.println("请输入要转换的数字:"); BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String s = br.readLine(); Trans_2 m = new Trans_2();
System.out.print(s + " = " + m.multi(s)); }
catch (IOException e)
{
e.printStackTrace();
}
}
}
要求:在以上程序基础上修改程序,可以输入不超过18位长度的数字,输出中文读法
sUnit[0] = "万";
sUnit[1] = "亿";
sUnit[2] = "万";
sUnit[3] = "亿";
sUnit[4] = "万"; sUnitNum = new int[5];
sUnitNum[0] = 4;
sUnitNum[1] = 8;
sUnitNum[2] = 12;
sUnitNum[3] = 16;
sUnitNum[4] = 20;
太不厚道了吧,怎么不说上面的ID都是你的马甲,嘿嘿~
1、如何判断输入的字符串是由数字组成?
2、长度控制为指定的长度
修改后的程序如下:
import java.io.*;
public class test {
//单位
private String[] bUnit; // 基本单位 十、百、千 private String[] sUnit; // 高级单位 万、亿 private int[] sUnitNum; // 高级单位 万、亿 位数 private String[] NumberStr; // 数字-中文对照 private boolean zeroSign; // 连续零 标识 void init() {
NumberStr = new String[10];
NumberStr[0] = "零";
NumberStr[1] = "壹";
NumberStr[2] = "贰";
NumberStr[3] = "叁";
NumberStr[4] = "肆";
NumberStr[5] = "伍";
NumberStr[6] = "陆";
NumberStr[7] = "柒";
NumberStr[8] = "捌";
NumberStr[9] = "玖"; bUnit = new String[4];
bUnit[0] = "";
bUnit[1] = "拾";
bUnit[2] = "佰";
bUnit[3] = "仟"; sUnit = new String[2];
sUnit[0] = "万";
sUnit[1] = "亿"; sUnitNum = new int[2];
sUnitNum[0] = 4;
sUnitNum[1] = 8; zeroSign = true;
}
//转换
String multi(String NumStr) {
String xNumber = "";
String xSUnit = "";
String tempNumber = ""; init(); int i = 0; // 位数计数器
while (NumStr.length() > 0) { if (NumStr.length() > 4) {
tempNumber = NumStr.substring(NumStr.length() - 4);
NumStr = NumStr.substring(0, NumStr.length() - 4);
} else {
tempNumber = NumStr;
NumStr = "";
} xSUnit = "";
for (int j = sUnitNum.length - 1; j >= 0 && i > 0; j--) {
int y = i % sUnitNum[j];
if (y == 0) {
xSUnit = sUnit[j];
j = -1;
}
} for (int j = tempNumber.length() - 1; j >= 0; j--) {
int x = Integer.parseInt(tempNumber.substring(j, j + 1));
int y = (tempNumber.length() - j - 1) % 4;
if (x != 0) {
xNumber = xSUnit + xNumber;
xNumber = bUnit[y] + xNumber;
xNumber = NumberStr[x] + xNumber;
zeroSign = false;
} else {
if (!zeroSign) {
xNumber = xSUnit + NumberStr[x] + xNumber;
} else if (xSUnit.length() > 0) {
xNumber = xSUnit + xNumber;
}
zeroSign = true;
}
xSUnit = "";
} i = i + 4;
}
return xNumber;
} public boolean isNumber(String str){
for (int i = 0; i < str.length(); i++){
//System.out.println(str.charAt(i));
if (!Character.isDigit(str.charAt(i))){
return false;
} else
return true;
}
return true;
} public String getString(){
try{
System.out.println("请输入要转换的数字并且长度不能超过16位:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
return s;
}catch (IOException e){
return "";
}
}
//主方法程序入口 ;
public static void main(String[] args) {
test m = new test();
while(true){
String s = m.getString();
if(m.isNumber(s) && (s.length() <= 16) && !s.equals("")){
System.out.println(s + " = " + m.multi(s));
} else{
System.out.println("请输入合法的数字");
}
}
}
}
不信的话 我马上换马甲上来澄清一切。 嘿嘿
切记~切记
呵呵
闪
> 我晕 上面的那个bbwls() 确实是我的马甲啊
> 我的马甲只用来攒可用分的。攒可用分干嘛呀?你都两颗星星啦,还有那么多问题要问吗?!还要,兄弟小声点告诉我,别让别人听到,你搞那两颗小星星有什么秘诀没有啊?是因为你的 ID 还是因为你的马甲啊?……hehe, just kidding ;P
我的星星可是自己回答问题挣来的 绝对光明磊落。升星星需要的是专家分,我的马甲主要攒可用分,然后进行可用分捐赠,这样我的大号就可以用这些可用分来散分了啊
楼主要的是不超过18位数字.. 实际的应用程序可没有限制..
昏倒..
---------
正题:
把 while (NumStr.length() > 0)
改: while (NumStr.length() > 0 && NumStr.length()<=18)
改这里: sUnit = new String[5];
sUnit[0] = "万";
sUnit[1] = "亿";
sUnit[2] = "万";
sUnit[3] = "亿";
sUnit[4] = "万"; sUnitNum = new int[5];
sUnitNum[0] = 4;
sUnitNum[1] = 8;
sUnitNum[2] = 12;
sUnitNum[3] = 16;
sUnitNum[4] = 20;
----------
我想我笨了,看不出来改这个符合题目要求.
改: while (NumStr.length() > 0 && NumStr.length()<=18)
public static void main(String[] args) {
int sign=0;
try
{
while(sign<=18){
System.out.println("请输入要转换的数字:");
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
String s = br.readLine();
sign=s.length();
if(sign<18){
Trans_2 m = new Trans_2();
System.out.println(s + " = " + m.multi(s));
break;
}
else{
System.out.println("您输入的长度超过18位,请输入18位的整数!");
sign=0;
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
分高你知识就一定高? 网络上还在意这个(白眼)无聊
public Trans_2() {
init();
} //单位
private String[] bUnit; // 基本单位 十、百、千
private String[] sUnit; // 高级单位 万、亿
private int[] sUnitNum; // 高级单位 万、亿 位数
private String[] NumberStr; // 数字-中文对照
private boolean zeroSign; // 连续零 标识
void init() {
NumberStr = new String[10];
NumberStr[0] = "零";
NumberStr[1] = "壹";
NumberStr[2] = "贰";
NumberStr[3] = "叁";
NumberStr[4] = "肆";
NumberStr[5] = "伍";
NumberStr[6] = "陆";
NumberStr[7] = "柒";
NumberStr[8] = "捌";
NumberStr[9] = "玖";
bUnit = new String[4];
bUnit[0] = "";
bUnit[1] = "拾";
bUnit[2] = "佰";
bUnit[3] = "仟";
sUnit = new String[3];
sUnit[0] = "万";
sUnit[1] = "亿";
sUnit[2] = "兆";
sUnitNum = new int[2];
sUnitNum[0] = 4;
sUnitNum[1] = 8;
} private int count = -1;
public String convert(String oldStr) {
String newStr = "";
String tempStr = oldStr;
String targetStr = "";
while (tempStr != "") {
if (tempStr.length() <= 4) {
count++;
targetStr = tempStr;
newStr = cellConvert(targetStr) + newStr;
tempStr = "";
} else {
targetStr = tempStr.substring(tempStr.length() - 4);
tempStr = tempStr.substring(0, tempStr.length() - 4);
count++;
newStr = cellConvert(targetStr) + newStr;
}
}
return newStr;
} private String cellConvert(String oldCellStr) {
String newCellStr = ""; //转换后的oldCellStr
String num = ""; //转换后的数字
String bunit; //转换后的基础单位
String sunit = ""; //转换后的高级单位
int tempCount = count;
for (int i = sUnit.length - 1; (tempCount != 0) && (i >= 0); i--) {
tempCount %= Math.pow(2, i);
sunit = sUnit[i];
}
int j = 0;
for (int i = oldCellStr.length(); i > 0; i--) {
try {
num = NumberStr[Integer.parseInt(oldCellStr.substring(i - 1, i))];
} catch (NumberFormatException ex) {
System.out.println("xie cuo le!!!");
} catch (ArrayIndexOutOfBoundsException ex) {
System.out.println("xie duo le!!!");
}
bunit = bUnit[j++];
newCellStr = num + bunit + newCellStr;
}
return newCellStr + sunit;
}
}看的头好大 分了个函数出来 不好意思哈, 1234123412341234123412341234
结果是
壹仟贰佰叁拾肆亿壹仟贰佰叁拾肆万壹仟贰佰叁拾肆兆壹仟贰佰叁拾肆万壹仟贰佰叁拾肆亿壹仟贰佰叁拾肆万壹仟贰佰叁拾肆