笔试题总结
- 每瓶水一元,每两个瓶子可以换一瓶水,现在有20元,可以换多少瓶水?(编程实现)
public class CalNum
{
public static void main(String[] args)
{
int MONEY = 20; //买水的总钱数
int PRICE = 1; //每瓶水的单价
int PERNUM = 2; //可以换取一瓶水的瓶子个数
int restNum = 0; //每次换完水之后剩下的瓶子个数
int currentNum = MONEY / PRICE;//当前总的瓶子个数
int sumNum = 0; //总共需要的瓶子个数while(currentNum > 0){
sumNum += currentNum;
if(restNum > 0)
currentNum += restNum;
restNum = currentNum % PERNUM;
currentNum /= PERNUM;
}
System.out.println("总的瓶子个数为:"+sumNum);
}
} - 将中文数值转换为阿拉伯数值,例如“一万零一十”转换为10010。要求:最大单位为亿级别;数值单位有亿、万、千、百、十。
/**
*将中文数值转换为阿拉伯数值,例如“一万零一十”转换为10010。
* 要求:最大单位为亿级别;数值单位有亿、万、千、百、十。
*/
public class WordChange
{
public static void main(String[] args)
{
char[] units = {'十','百','千','万','亿'}; //单位单元
char[] words = {'零','一','二','三','四','五','六','七','八','九'};//数值单元
String srcStr = "九百二十万六千零一十";
double tarStr = 0.0;
double currentNum = 0;
double tempSum = 0.0;for(int i=0;i<srcStr.length();i++){
char c = srcStr.charAt(i);
boolean flag = false;
for(int j=0;j<words.length;j++){
if(words[j] == c){
currentNum = j; //记录数值
flag = true;
break;
}
}
if(flag)
continue;for(int k=0;k<units.length;k++){
if(units[k] == c){
if(c == '亿'){
tarStr += (tempSum+currentNum)*Math.pow(10,8);
tempSum = 0;
}else if(c == '万'){
tarStr += (tempSum+currentNum)*Math.pow(10,k+1);
tempSum = 0;
}else
tempSum += currentNum*Math.pow(10,k+1);
currentNum = 0.0;
break;
}else if(k == units.length - 1){
System.out.print("输入有误,请检查错误!");
}
}
}
tarStr += (tempSum + currentNum);System.out.println("最后的结果为:"+tarStr);
}
}
/**
*思路:1、设计数值单元和单位单元
* 2、循环判断这个字符是数值还是单位,如果是数值,继续睇3步;否则,继续第4步
* 3、判断数值,根据下标转换为相应的阿拉伯数字
* 4、如果是单位,将其分成三部分,第一部分以'亿'为标示,第二部分以'万'为标示,
* 第三部分以其它(十、百、千)为标示
* 5、计算部分:如果是第三部分为标示,则直接计算相加(如五百,就是5*(10^2))
* 如果是其它单位分类,则用所计算的和乘以相应的单位(如果是五亿,就是和5*(10^8))
* 6、循环结束之后,将所有和相加。(包括相加总和和最后一个数字)
* 这是本人思路,如果有其它思路,欢迎提出
*/
浙公网安备 33010602011771号