两道Java编程题

(1)现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset

 1import java.util.*;
 2public class bycomma
{
 3 public static String[] splitStringByComma(String source)
{
 4   if(source==null||source.trim().equals(""
))
 5    return null
;
 6   StringTokenizer commaToker = new StringTokenizer(source,","
);
 7   String[] result = new
 String[commaToker.countTokens()];
 8   int i=0
;
 9   while(commaToker.hasMoreTokens())
{
10    result[i] =
 commaToker.nextToken();
11    i++
;
12   }

13   return result;
14 }

15 public static void main(String args[]){
16 String[] s = splitStringByComma("5,8,7,4,3,9,1"
);
17 int[] ii = new int
[s.length];
18 for(int i = 0;i<s.length;i++)
{
19 ii[i] =
Integer.parseInt(s[i]);
20 }

21    Arrays.sort(ii);
22    //asc

23    for(int i=0;i<s.length;i++){
24
    System.out.println(ii[i]);
25    }

26    //desc
27    for(int i=(s.length-1);i>=0;i--){
28
    System.out.println(ii[i]);
29    }

30 }

31}

(2)金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

  1package test.format;
  2import
 java.text.NumberFormat;
  3import
 java.util.HashMap;
  4public class SimpleMoneyFormat 
{
  5  public static final String EMPTY = ""
;
  6  public static final String ZERO = ""
;
  7  public static final String ONE = ""
;
  8  public static final String TWO = ""
;
  9  public static final String THREE = ""
;
 10  public static final String FOUR = ""
;
 11  public static final String FIVE = ""
;
 12  public static final String SIX = ""
;
 13  public static final String SEVEN = ""
;
 14  public static final String EIGHT = ""
;
 15  public static final String NINE = ""
;
 16  public static final String TEN = ""
;
 17  public static final String HUNDRED = ""
;
 18  public static final String THOUSAND = ""
;
 19  public static final String TEN_THOUSAND = ""
;
 20  public static final String HUNDRED_MILLION = "亿"
;
 21  public static final String YUAN = ""
;
 22  public static final String JIAO = ""
;
 23  public static final String FEN = ""
;
 24  public static final String DOT = "."
;
 25

 26  private static SimpleMoneyFormat formatter = null
;
 27  private HashMap chineseNumberMap = new
 HashMap();
 28  private HashMap chineseMoneyPattern = new
 HashMap();
 29  private NumberFormat numberFormat =
 NumberFormat.getInstance();
 30

 31  private SimpleMoneyFormat() 
{
 32    numberFormat.setMaximumFractionDigits(4
);
 33    numberFormat.setMinimumFractionDigits(2
);
 34    numberFormat.setGroupingUsed(false
);
 35

 36    chineseNumberMap.put("0"
, ZERO);
 37    chineseNumberMap.put("1"
, ONE);
 38    chineseNumberMap.put("2"
, TWO);
 39    chineseNumberMap.put("3"
, THREE);
 40    chineseNumberMap.put("4"
, FOUR);
 41    chineseNumberMap.put("5"
, FIVE);
 42    chineseNumberMap.put("6"
, SIX);
 43    chineseNumberMap.put("7"
, SEVEN);
 44    chineseNumberMap.put("8"
, EIGHT);
 45    chineseNumberMap.put("9"
, NINE);
 46
    chineseNumberMap.put(DOT, DOT);
 47

 48    chineseMoneyPattern.put("1"
, TEN);
 49    chineseMoneyPattern.put("2"
, HUNDRED);
 50    chineseMoneyPattern.put("3"
, THOUSAND);
 51    chineseMoneyPattern.put("4"
, TEN_THOUSAND);
 52    chineseMoneyPattern.put("5"
, TEN);
 53    chineseMoneyPattern.put("6"
, HUNDRED);
 54    chineseMoneyPattern.put("7"
, THOUSAND);
 55    chineseMoneyPattern.put("8"
, HUNDRED_MILLION);
 56  }

 57
 58  public static SimpleMoneyFormat getInstance() 
{
 59    if (formatter == null
)
 60      formatter = new
 SimpleMoneyFormat();
 61    return
 formatter;
 62  }

 63
 64  public String format(String moneyStr) 
{
 65
    checkPrecision(moneyStr);
 66
    String result;
 67    result =
 convertToChineseNumber(moneyStr);
 68    result =
 addUnitsToChineseMoneyString(result);
 69    return
 result;
 70  }

 71
 72  public String format(double moneyDouble) 
{
 73    return
 format(numberFormat.format(moneyDouble));
 74  }

 75
 76  public String format(int moneyInt) 
{
 77    return
 format(numberFormat.format(moneyInt));
 78  }

 79
 80  public String format(long moneyLong) 
{
 81    return
 format(numberFormat.format(moneyLong));
 82  }

 83
 84  public String format(Number moneyNum) 
{
 85    return
 format(numberFormat.format(moneyNum));
 86  }

 87
 88  private String convertToChineseNumber(String moneyStr) 
{
 89
    String result;
 90    StringBuffer cMoneyStringBuffer = new
 StringBuffer();
 91    for (int i = 0; i < moneyStr.length(); i++
{
 92      cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i, i + 1
)));
 93    }

 94    //拾佰仟万亿等都是汉字里面才有的单位,加上它们
 95    int indexOfDot = cMoneyStringBuffer.indexOf(DOT);
 96    int moneyPatternCursor = 1
;
 97    for (int i = indexOfDot - 1; i > 0; i--
{
 98      cMoneyStringBuffer.insert(i, chineseMoneyPattern.get(EMPTY +
 moneyPatternCursor));
 99      moneyPatternCursor = moneyPatternCursor == 8 ? 1 : moneyPatternCursor + 1
;
100    }

101
102    String fractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf("."
));
103    cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."
), cMoneyStringBuffer.length());
104    while (cMoneyStringBuffer.indexOf("零拾"!= -1
{
105      cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"), cMoneyStringBuffer.indexOf("零拾"+ 2
, ZERO);
106    }

107    while (cMoneyStringBuffer.indexOf("零佰"!= -1{
108      cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零佰"), cMoneyStringBuffer.indexOf("零佰"+ 2
, ZERO);
109    }

110    while (cMoneyStringBuffer.indexOf("零仟"!= -1{
111      cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"), cMoneyStringBuffer.indexOf("零仟"+ 2
, ZERO);
112    }

113    while (cMoneyStringBuffer.indexOf("零万"!= -1{
114      cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零万"), cMoneyStringBuffer.indexOf("零万"+ 2
, TEN_THOUSAND);
115    }

116    while (cMoneyStringBuffer.indexOf("零亿"!= -1{
117      cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零亿"), cMoneyStringBuffer.indexOf("零亿"+ 2
, HUNDRED_MILLION);
118    }

119    while (cMoneyStringBuffer.indexOf("零零"!= -1{
120      cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零零"), cMoneyStringBuffer.indexOf("零零"+ 2
, ZERO);
121    }

122    if (cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1)
123      cMoneyStringBuffer.delete(cMoneyStringBuffer.length() - 1
, cMoneyStringBuffer.length());
124
    cMoneyStringBuffer.append(fractionPart);
125

126    result =
 cMoneyStringBuffer.toString();
127    return
 result;
128  }

129
130  private String addUnitsToChineseMoneyString(String moneyStr) 
{
131
    String result;
132    StringBuffer cMoneyStringBuffer = new
 StringBuffer(moneyStr);
133    int indexOfDot =
 cMoneyStringBuffer.indexOf(DOT);
134    cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1
, YUAN);
135}
posted @ 2007-08-06 14:59  念月思灵  阅读(1003)  评论(0编辑  收藏  举报