要求:请考虑代码执行的效率并注意编码的风格。
2. 现有一个类person有三个属性,分别是name,age,sex。有一个List对象,保存了很多person对象的实例,请编写一个函数,对List里的实例进行排序。条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。
3. 有一个水果箱(box),箱子里装有水果(fruit)。每一种水果都有不同的重量(weight)和颜色(color),水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),也可以取出水果(getFruit)。请编写java代码实现上述功能。
4. 有一静态整形变量X,初始值为0,用JAVA写四个线程,二个对其加1,二个对其减一,X等于0时不进行减操作,X等于5时结束程序。
5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七”。
385 个解决方案
#1
函数是什么东东!!
#2
大哥。。这些题很基本。楼主真的去面试了?????哪里的???
#3
第5题,以前写的
public static String changeUpper(int lowerNum){
StringBuffer sb=new StringBuffer();
if(lowerNum>0&&lowerNum<Math.pow(10, 1)){
sb.append(getNum(lowerNum));
}
else if(lowerNum>=Math.pow(10, 1)&&lowerNum<Math.pow(10, 2)){
sb.append(getNum(lowerNum/10)).append(getUnit(String.valueOf(lowerNum).length()));
sb.append(changeUpper(lowerNum%10));
}else if(lowerNum>=Math.pow(10, 2)&&lowerNum<Math.pow(10, 3)){
int t=(int) Math.pow(10, 2);
sb.append(getNum(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 3)&&lowerNum<Math.pow(10,4)){
int t=(int) Math.pow(10, 3);
sb.append(getNum(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 4)&&lowerNum<Math.pow(10, 8)){
int t=(int) Math.pow(10, 4);
sb.append(changeUpper(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 8)){
int t=(int)Math.pow(10, 8);
sb.append(changeUpper(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else{
//sb.append("零");
}
return sb.toString();
}
#4
少发了点代码
private static String[] UNIT={"拾","佰","千","万","亿"};
private static String[] NUM={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static String getUnit(int i){
String unit="";
switch(i){
case 2 :unit=UNIT[0];break;
case 3 :unit=UNIT[1];break;
case 4 :unit=UNIT[2];break;
case 5 :unit=UNIT[3];break;
case 6 :unit=UNIT[3];break;
case 7 :unit=UNIT[3];break;
case 8 :unit=UNIT[3];break;
default:unit=UNIT[4];
}
return unit;
}
private static String getNum(int i){
return NUM[i];
}
#5
1、
package com.xuz.csdn.july11;
public class FindLongRepert {
public static void main(String[] args) {
String result = "aaaabbbbbbcccdddaa";
char[] array = result.toCharArray();
char ch = array[0];
char maxCh = 0;
int count = 1;
int maxCount = -1;
for (int i = 1; i < array.length ; i++) {
if (ch == array[i]) {
count++;
} else {
if (maxCount < count) {
maxCount = count;
maxCh = ch;
}
count = 1;
ch = array[i];
}
}
System.out.println(maxCh + " : " + maxCount);
}
}
#6
2、没看懂。请给个实例。 18岁以上的怎么办? 18岁以下的全部降序是什么意思?
类似数据库的 order by sex desc,age desc,name desc ?
类似数据库的 order by sex desc,age desc,name desc ?
#7
4\
package com.xuz.csdn.july11;
public class ThreadTest {
static int i = 0;
static Object lock = new Object();
public static void main(String[] args) {
Thread th1 = new Thread(new AddThread(lock));
Thread th2 = new Thread(new AddThread(lock));
Thread th3 = new Thread(new SubThread(lock));
Thread th4 = new Thread(new SubThread(lock));
th1.start();
th2.start();
th3.start();
th4.start();
}
static class AddThread implements Runnable {
Object lock;
public AddThread(Object lock) {
this.lock = lock;
}
@Override
public void run() {
while (true) {
if (i == 5) {
System.out.println(Thread.currentThread().getName()
+ " over");
return;
}
synchronized (lock) {
i++;
System.out.println(Thread.currentThread().getName() + " i++ = "
+ i);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
static class SubThread implements Runnable {
Object lock;
public SubThread(Object lock){
this.lock = lock;
}
@Override
public void run() {
while (true) {
if (i == 5) {
System.out.println(Thread.currentThread().getName()
+ " over");
return;
}
synchronized (lock) {
if (i != 0) {
i--;
}
System.out.println(Thread.currentThread().getName() + " i-- = "
+ i);
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
#8
都不难啊,
第一题从首字符开始查找和计数,发现不同的就记下刚才数到的,数万了结果也出来了!其中只有少许逻辑判断!
第二题用实现可比较的接口去弄!
第三题我就不多说了!
第四题考你线程!
第五题我不想说!
第一题从首字符开始查找和计数,发现不同的就记下刚才数到的,数万了结果也出来了!其中只有少许逻辑判断!
第二题用实现可比较的接口去弄!
第三题我就不多说了!
第四题考你线程!
第五题我不想说!
#9
1,5用正则表达式应该会稍简单,第2个实现Comparable接口后,用Collections.sort(List...)方法,第3,4应该不难
#10
ding
#11
会者不难
难者不会……
难者不会……
#12
第五题 ,给你个高效的代码:
package com.java.ccc;
public class NumToChinise {
String str = null;
String [] strunit = {"拾","百","千","万","亿","兆"};
String [] strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] s = new String[2] ;
String [] stname = {"角","分","厘"};
static StringBuffer sf = new StringBuffer();
NumToChinise(int str)
{
this.str = str+"";
}
public void Chinise(String[] strby){
//最多三个0 最多取四位
int tt = 0;
for(int i = 0 ; i < strby[0].length(); ){
if(Integer.parseInt(strby[0].substring(0,1)) == 0 ){
strby[0] = strby[0].toString().substring(1);
if(tt == 0 && strby[0].length() != 0 && Integer.parseInt(strby[0]) != 0){
//System.out.print(strnum[0]);
sf.append(strnum[0]);
tt = 1 ;
}
}else
{
//System.out.print(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
sf.append(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
if(strby[0].length()-2 >= 0){
sf.append(strunit[strby[0].length()-2]);
//System.out.print(strunit[strby[0].length()-2]);
}
strby[0] = strby[0].toString().substring(1);
tt = 0;
}
}
}
public StringBuffer tochinise5(String str)
{
String st[] = str.split("\\.");
//System.out.println(st.length);
for(int i = 0 ; i < st[0].length()&& st[0].length()<= 9; )
{
if(st[0].toString().length() < 5 )
{
Chinise(st);
sf.append("元");
//System.out.print("元");
}
if(st[0].toString().length() >= 5 && st[0].toString().length() <9)
{
s[0]= st[0].substring(0,st[0].toString().length() - 4);
Chinise(s);
//System.out.print("万");
sf.append("万");
st[0] = st[0].substring(st[0].toString().length() - 4);
}
if(st[0].toString().length() >= 9 && st[0].toString().length() <=12)
{
s[0]= st[0].substring(0,st[0].toString().length() - 8);
Chinise(s);
sf.append("亿");
//System.out.print("亿");
st[0] = st[0].substring(st[0].toString().length() - 8);
}
}
endTochinise(st);
return sf;
}
public void endTochinise(String[] endstr)
{
if(endstr.length>1){
int ss = 0;
endstr[1] = endstr[1].toString().substring(0,3);
for(int i=0 ; i < 3 ; i++)
{
if(Integer.parseInt(endstr[1].substring(0,1)) == 0 )
{
//System.out.print(endstr[1].toString().substring(0, 1)+stname[i]);
sf.append(endstr[1].toString().substring(0, 1)+stname[i]);
endstr[1] = endstr[1].toString().substring(1);
ss = 1;
}else
{
if(endstr[1].length()-1 >= 0){
//System.out.print(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
sf.append(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
}
endstr[1] = endstr[1].toString().substring(1);
ss = 0;
}
}
}
}
}
package com.java.ccc;
public class NumToChinise {
String str = null;
String [] strunit = {"拾","百","千","万","亿","兆"};
String [] strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] s = new String[2] ;
String [] stname = {"角","分","厘"};
static StringBuffer sf = new StringBuffer();
NumToChinise(int str)
{
this.str = str+"";
}
public void Chinise(String[] strby){
//最多三个0 最多取四位
int tt = 0;
for(int i = 0 ; i < strby[0].length(); ){
if(Integer.parseInt(strby[0].substring(0,1)) == 0 ){
strby[0] = strby[0].toString().substring(1);
if(tt == 0 && strby[0].length() != 0 && Integer.parseInt(strby[0]) != 0){
//System.out.print(strnum[0]);
sf.append(strnum[0]);
tt = 1 ;
}
}else
{
//System.out.print(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
sf.append(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
if(strby[0].length()-2 >= 0){
sf.append(strunit[strby[0].length()-2]);
//System.out.print(strunit[strby[0].length()-2]);
}
strby[0] = strby[0].toString().substring(1);
tt = 0;
}
}
}
public StringBuffer tochinise5(String str)
{
String st[] = str.split("\\.");
//System.out.println(st.length);
for(int i = 0 ; i < st[0].length()&& st[0].length()<= 9; )
{
if(st[0].toString().length() < 5 )
{
Chinise(st);
sf.append("元");
//System.out.print("元");
}
if(st[0].toString().length() >= 5 && st[0].toString().length() <9)
{
s[0]= st[0].substring(0,st[0].toString().length() - 4);
Chinise(s);
//System.out.print("万");
sf.append("万");
st[0] = st[0].substring(st[0].toString().length() - 4);
}
if(st[0].toString().length() >= 9 && st[0].toString().length() <=12)
{
s[0]= st[0].substring(0,st[0].toString().length() - 8);
Chinise(s);
sf.append("亿");
//System.out.print("亿");
st[0] = st[0].substring(st[0].toString().length() - 8);
}
}
endTochinise(st);
return sf;
}
public void endTochinise(String[] endstr)
{
if(endstr.length>1){
int ss = 0;
endstr[1] = endstr[1].toString().substring(0,3);
for(int i=0 ; i < 3 ; i++)
{
if(Integer.parseInt(endstr[1].substring(0,1)) == 0 )
{
//System.out.print(endstr[1].toString().substring(0, 1)+stname[i]);
sf.append(endstr[1].toString().substring(0, 1)+stname[i]);
endstr[1] = endstr[1].toString().substring(1);
ss = 1;
}else
{
if(endstr[1].length()-1 >= 0){
//System.out.print(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
sf.append(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
}
endstr[1] = endstr[1].toString().substring(1);
ss = 0;
}
}
}
}
}
#13
仔细一看不是太难!
但事实上还是蛮有难度的!
这是上机题吧。啥时候联系联系。
但事实上还是蛮有难度的!
这是上机题吧。啥时候联系联系。
#14
第一
/*
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*/
public class Test{
public static void main(String[] args){
String content = "aaaddxxxxddddxxxx";
getMaxLength(content);
}
private static void getMaxLength(String content){
if(content == null || content.length() == 0){
throw new IllegalArgumentException("content is invalid.");
}
String maxStr = null;
int maxCount = 0;
String tempStr = null;
int tempCount = 0;
while(content.length() != 0){
tempStr = content.substring(0,1);
tempCount = content.length() - content.replaceAll(tempStr,"").length();
content = content.replaceAll(tempStr,"");
if(tempCount > maxCount){
maxStr = tempStr;
maxCount = tempCount;
}
}
System.out.println("maxStr: " + maxStr + " Total: " + maxCount);
}
}
#15
#16
面试的时候,考上机题的多吗?
上机题考试挺郁闷的。
上机题考试挺郁闷的。
#17
我是搞C#的,第一题的思路就是:
循环字符串的长度,判断下一位与上一位是否相等,当发现不等时,记下上一位是哪个字符及位数。最后比较位数了。
循环字符串的长度,判断下一位与上一位是否相等,当发现不等时,记下上一位是哪个字符及位数。最后比较位数了。
#18
我觉得这个不会太难
#19
这个好像不错,但效率好像不太高了吧
#20
回帖赚积分。
#21
public static String maxLength(String s){
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() > m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() > m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
#22
#23
一个一个字符的整已经是上古时代的事情了,大家要习惯用jdk里的工具啊
#24
public static String maxLength(String s){
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() >= m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
#25
第5题程序(仅供参考):
//编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七
import java.util.*;
public class Change{
public static void main(String [] args){
Scanner reader=new Scanner(System.in);
System.out.print("请输入一个整数(0~99999):");
String s=reader.nextLine();
char a[]=new char[s.length()];
String b[]={"万","千","百","十"," "};
System.out.println("您输入的整数为(0~99999):"+s);
System.out.print(s+"对应中文为:");
for(int i=0;i<s.length();i++){
a[i]=s.charAt(i);
switch(a[i]){
case '0':System.out.print("零");break;
case '1':System.out.print("壹");break;
case '2':System.out.print("贰");break;
case '3':System.out.print("叁");break;
case '4':System.out.print("肆");break;
case '5':System.out.print("伍");break;
case '6':System.out.print("陆");break;
case '7':System.out.print("柒");break;
case '8':System.out.print("捌");break;
case '9':System.out.print("玖");break;
default:System.out.print("输入错误!");
}
switch(s.length()){
case 1:break;
case 2:System.out.print(b[i+3]);break;
case 3:System.out.print(b[i+2]);break;
case 4:System.out.print(b[i+1]);break;
case 5:System.out.print(b[i]);break;
}
}
System.out.println();
}
}
//编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七
import java.util.*;
public class Change{
public static void main(String [] args){
Scanner reader=new Scanner(System.in);
System.out.print("请输入一个整数(0~99999):");
String s=reader.nextLine();
char a[]=new char[s.length()];
String b[]={"万","千","百","十"," "};
System.out.println("您输入的整数为(0~99999):"+s);
System.out.print(s+"对应中文为:");
for(int i=0;i<s.length();i++){
a[i]=s.charAt(i);
switch(a[i]){
case '0':System.out.print("零");break;
case '1':System.out.print("壹");break;
case '2':System.out.print("贰");break;
case '3':System.out.print("叁");break;
case '4':System.out.print("肆");break;
case '5':System.out.print("伍");break;
case '6':System.out.print("陆");break;
case '7':System.out.print("柒");break;
case '8':System.out.print("捌");break;
case '9':System.out.print("玖");break;
default:System.out.print("输入错误!");
}
switch(s.length()){
case 1:break;
case 2:System.out.print(b[i+3]);break;
case 3:System.out.print(b[i+2]);break;
case 4:System.out.print(b[i+1]);break;
case 5:System.out.print(b[i]);break;
}
}
System.out.println();
}
}
#26
没事时写一下,呵呵
#27
搞半天做了一个
String a="aaaaaaaabbbxxxxxxxxxc";
int []v_k=new int['z'];
for(int i=0;i<a.length();i++){
v_k[a.charAt(i)]++;
}
int max=0;
int index=0;
for(int i=0;i<v_k.length;i++){
if(max<v_k[i]){
max=v_k[i];
index=i;
}
}
System.out.println(((char)index)+" "+max);
String a="aaaaaaaabbbxxxxxxxxxc";
int []v_k=new int['z'];
for(int i=0;i<a.length();i++){
v_k[a.charAt(i)]++;
}
int max=0;
int index=0;
for(int i=0;i<v_k.length;i++){
if(max<v_k[i]){
max=v_k[i];
index=i;
}
}
System.out.println(((char)index)+" "+max);
#28
不是很难,没有涉及到很深的算法,如果有算法问题,估计更郁闷死你
#29
3
public class Fruit {
private int weight;
private Color color;
public Fruit(){
}
public int getWeight() {
return weight;
}
protected void setWeight(int weight) {
this.weight = weight;
}
public Color getColor() {
return color;
}
protected void setColor(Color color) {
this.color = color;
}
public String toString(){
return "This is a "+color.toString()+" "+this.getClass().getSimpleName()+" its weight is "+weight;
}
}
public class Apple extends Fruit {
public Apple(int weight, Color color){
super();
this.setWeight(weight);
this.setColor(color);
}
}
public class Pear extends Fruit {
public Pear(int weight, Color color){
super();
this.setWeight(weight);
this.setColor(color);
}
}
public enum Color {
GREEN, RED, YELLOW;
}
public class FruitBox {
private List<Fruit> fruits;
public int size;
public FruitBox(){
fruits = new ArrayList<Fruit>();
}
public void addFruit(Fruit fruit){
this.fruits.add(fruit);
size++;
}
public Fruit getFruit(int index){
return this.fruits.get(index);
}
public static void main(String[] args){
FruitBox fruitbox = new FruitBox();
fruitbox.addFruit(new Apple(10, Color.GREEN));
fruitbox.addFruit(new Pear(15, Color.YELLOW));
fruitbox.addFruit(new Apple(13, Color.RED));
for (int i =0;i < fruitbox.size; i++){
System.out.println(fruitbox.getFruit(i).toString());
}
}
}
#30
有难度啊。。。。
#32
涉足尚且。。。
发个帖顶下赚积分。。。
发个帖顶下赚积分。。。
#33
第一个题也完成了,但对于连续0的处理还不是很好,需要完善,但是大概思路是这样的。
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx
#34
UP!!!!!!!!!!
#35
好~ !
#36
过来学习一下..
#37
学习一下!
#38
最后一题,抽空做了一下
package Test;
import java.util.Scanner;
public class Demo5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
show();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}
}
package Test;
import java.util.Scanner;
public class Demo5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
show();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}
}
#39
回帖是美德
#40
抽空过来学习......
#41
差距 .
#42
第五题:
/*
5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,
没有小数。例:输入“3587”,返回“三千伍百八十七”。
*/
//package com.ricky.www;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test{
public static void main(String[] args){
System.out.println("Input a number[0 - 99999]: ");
Scanner keyboard = new Scanner(System.in);
String content = keyboard.nextLine();
printValue(content);
}
private static boolean isValid(String content){
//有效性判断.
int num = 0;
try{
num = Integer.valueOf(content);
}catch(NumberFormatException e){
System.err.println("'content = " + content +
" ' is not a valid number.");
return false;
}
if(content.length() > 5){
System.err.println("The number is " +
"input is invalid. arange[1 - 99999]");
return false;
}
if(content.indexOf("0") == 0){
System.err.println("'content = " + content +
" ' is not a valid number.");
return false;
}
return true;
}
private static String printValue(String content){
if(!isValid(content)){
return null;
}
//壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、萬
String nums[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String sign[] = {"拾","佰","仟","萬"};
content = content.replaceAll("(?<=\\d)(?=\\d)",",");//用,分隔数字
String temp = content.replaceAll("(,0)*$","");//去除最后的零的部分
int gaps = temp.length() == content.length() ? temp.length() : temp.length() + 1;
String regex = "(.*),(.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
int i = 0;
while(matcher.find()){
//将修饰符加上去
content = matcher.group(1) + sign[i ++] + matcher.group(2);
matcher = pattern.matcher(content);
}
content = content.substring(0,gaps);//截取有效长度
content = content.replaceAll("0.","零");//将诸如 1024 中的 0 进行处理
for(i = 1 ; i <= 9 ; i ++){
content = content.replaceAll("" + i,nums[i]);//将数字转为中文
}
System.out.println(content);
return content;
}
}
#43
第一题:
/*
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*/
//package com.ricky.www;
public class Test{
public static void main(String[] args){
String content = "aaaddxxxxddddxxxx";
int max = 0;
String result = null;
String after = null;
int count = 0;
while(content.length() != 0){
after = content.replaceAll("^(\\w)\\1*","");
count = content.length() - after.length();
if(count > max){
max = count;
result = content.substring(0,1);
}
content = after;
}
System.out.println(result + " , " + max);
}
}
#44
第二题
/*
2. 现有一个类person有三个属性,分别是name,age,sex。
有一个List对象,保存了很多person对象的实例,
请编写一个函数,对List里的实例进行排序。
条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。
*/
//package com.ricky.www;
import java.util.ArrayList;
import java.util.Collections;
public class Test{
public static void main(String[] args){
Person p1 = new Person("ricky",23,"B");
Person p2 = new Person("boy",15,"B");
Person p3 = new Person("girl",16,"G");
Person p4 = new Person("jennie",22,"G");
ArrayList<Person> list = new ArrayList<Person>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
Person.setCompareSign(Person.NAME);//通过name来排序
Collections.sort(list);
print(list);
System.out.println("-----------------------------------------");
Person.setCompareSign(Person.AGE);//通过age来排序
Collections.sort(list);
print(list);
System.out.println("-----------------------------------------");
Person.setCompareSign(Person.SEX);//通过sex来排序
Collections.sort(list);
print(list);
}
public static void print(ArrayList<Person> list){
for(Person p : list){
System.out.println(p);
}
}
//-----------------------------------------
private static class Person implements Comparable<Person>{
private static int sign = 3;
private final static int NAME = 1;
private final static int AGE = 2;
private final static int SEX = 3;
public Person(){
// default constructor
}
public Person(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public static void setCompareSign(int signValue){
//sign only can choose NAME , AGE or SEX
if((sign != NAME) && (sign != AGE) && (sign != SEX)){
throw new IllegalArgumentException(sign + " is invalid.");
}
sign = signValue;
}
public int compareTo(Person p){
if(sign == NAME){
return this.name.compareTo(p.name);
}else if(sign == AGE){
return age - p.age;
}
return this.sex.compareTo(p.sex);
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String getSex(){
return sex;
}
public String toString(){
return "name: " + name + " age: " + age + " sex: " + sex;
}
String name;
int age;
String sex;
}
}
#45
题目我收藏了,为跳槽做准备!不难!
#46
第三题
/*
3. 有一个水果箱(box),箱子里装有水果(fruit)。
每一种水果都有不同的重量(weight)和颜色(color),
水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),
也可以取出水果(getFruit)。请编写java代码实现上述功能。
*/
//package com.ricky.www;
import java.util.ArrayList;
public class Test{
public static void main(String[] args){
FruitBox box = new FruitBox();
Fruit[] fruits = {
new Apple(0.6,"RED"),
new Pear(0.5,"YELLOW"),
new Apple(0.8,"GREEN")
};
for(Fruit f : fruits){
box.addFruit(f);
}
box.toString();
box.getFruit();
box.toString();
}
private static abstract class Fruit{
public double weight;
public String color;
public Fruit(double weight,String color){
this.weight = weight;
this.color = color;
}
public abstract String toString();
}
public static class Apple extends Fruit{
public Apple(double weight,String color){
super(weight,color);
}
public String toString(){
return "apple:[weight=" + weight + ",color=" + color + "].";
}
}
public static class Pear extends Fruit{
public Pear(double weight,String color){
super(weight,color);
}
public String toString(){
return "pear:[weight=" + weight + ",color=" + color + "].";
}
}
private static class FruitBox{
ArrayList<Fruit> list = new ArrayList<Fruit>();
public void addFruit(Fruit fruit){
list.add(fruit);
}
public void addFruit(int index , Fruit fruit){
list.add(index,fruit);
}
public Fruit getFruit(){
return list.remove(0);
}
public Fruit getFruit(int i){
return list.remove(i);
}
public String toString(){
for(Fruit f : list){
System.out.println(f);
}
System.out.println("------------------------");
return null;
}
}
}
#47
#48
装B谁不会
#49
看见大段大段的代码就感觉离答案好远。。。唉。。。我很菜。。。
#50
第四题(modify方法)第五题(show方法)
package Test;
import java.util.Scanner;
public class Demo5 {
private static int x = 0;
private static boolean flag=true;
public static void main(String[] args) {
modify();
}
public static void modify() {
Thread t1 = new Thread(){
@Override
public void run() {
while(flag) {
x-=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t2 = new Thread() {
@Override
public void run() {
while(flag) {
x-=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t3 = new Thread(){
@Override
public void run() {
while(flag) {
x+=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t4 = new Thread(){
@Override
public void run() {
while(flag) {
x+=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
t1.start();
t2.start();
t3.start();
t4.start();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}
}
#1
函数是什么东东!!
#2
大哥。。这些题很基本。楼主真的去面试了?????哪里的???
#3
第5题,以前写的
public static String changeUpper(int lowerNum){
StringBuffer sb=new StringBuffer();
if(lowerNum>0&&lowerNum<Math.pow(10, 1)){
sb.append(getNum(lowerNum));
}
else if(lowerNum>=Math.pow(10, 1)&&lowerNum<Math.pow(10, 2)){
sb.append(getNum(lowerNum/10)).append(getUnit(String.valueOf(lowerNum).length()));
sb.append(changeUpper(lowerNum%10));
}else if(lowerNum>=Math.pow(10, 2)&&lowerNum<Math.pow(10, 3)){
int t=(int) Math.pow(10, 2);
sb.append(getNum(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 3)&&lowerNum<Math.pow(10,4)){
int t=(int) Math.pow(10, 3);
sb.append(getNum(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 4)&&lowerNum<Math.pow(10, 8)){
int t=(int) Math.pow(10, 4);
sb.append(changeUpper(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else if(lowerNum>=Math.pow(10, 8)){
int t=(int)Math.pow(10, 8);
sb.append(changeUpper(lowerNum/t)).append(getUnit(String.valueOf(lowerNum).length()));
int tmp=lowerNum%t;
if(tmp>0&&tmp<t/10){
sb.append("零");
}
sb.append(changeUpper(lowerNum%t));
}else{
//sb.append("零");
}
return sb.toString();
}
#4
少发了点代码
private static String[] UNIT={"拾","佰","千","万","亿"};
private static String[] NUM={"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
private static String getUnit(int i){
String unit="";
switch(i){
case 2 :unit=UNIT[0];break;
case 3 :unit=UNIT[1];break;
case 4 :unit=UNIT[2];break;
case 5 :unit=UNIT[3];break;
case 6 :unit=UNIT[3];break;
case 7 :unit=UNIT[3];break;
case 8 :unit=UNIT[3];break;
default:unit=UNIT[4];
}
return unit;
}
private static String getNum(int i){
return NUM[i];
}
#5
1、
package com.xuz.csdn.july11;
public class FindLongRepert {
public static void main(String[] args) {
String result = "aaaabbbbbbcccdddaa";
char[] array = result.toCharArray();
char ch = array[0];
char maxCh = 0;
int count = 1;
int maxCount = -1;
for (int i = 1; i < array.length ; i++) {
if (ch == array[i]) {
count++;
} else {
if (maxCount < count) {
maxCount = count;
maxCh = ch;
}
count = 1;
ch = array[i];
}
}
System.out.println(maxCh + " : " + maxCount);
}
}
#6
2、没看懂。请给个实例。 18岁以上的怎么办? 18岁以下的全部降序是什么意思?
类似数据库的 order by sex desc,age desc,name desc ?
类似数据库的 order by sex desc,age desc,name desc ?
#7
4\
package com.xuz.csdn.july11;
public class ThreadTest {
static int i = 0;
static Object lock = new Object();
public static void main(String[] args) {
Thread th1 = new Thread(new AddThread(lock));
Thread th2 = new Thread(new AddThread(lock));
Thread th3 = new Thread(new SubThread(lock));
Thread th4 = new Thread(new SubThread(lock));
th1.start();
th2.start();
th3.start();
th4.start();
}
static class AddThread implements Runnable {
Object lock;
public AddThread(Object lock) {
this.lock = lock;
}
@Override
public void run() {
while (true) {
if (i == 5) {
System.out.println(Thread.currentThread().getName()
+ " over");
return;
}
synchronized (lock) {
i++;
System.out.println(Thread.currentThread().getName() + " i++ = "
+ i);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
static class SubThread implements Runnable {
Object lock;
public SubThread(Object lock){
this.lock = lock;
}
@Override
public void run() {
while (true) {
if (i == 5) {
System.out.println(Thread.currentThread().getName()
+ " over");
return;
}
synchronized (lock) {
if (i != 0) {
i--;
}
System.out.println(Thread.currentThread().getName() + " i-- = "
+ i);
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
#8
都不难啊,
第一题从首字符开始查找和计数,发现不同的就记下刚才数到的,数万了结果也出来了!其中只有少许逻辑判断!
第二题用实现可比较的接口去弄!
第三题我就不多说了!
第四题考你线程!
第五题我不想说!
第一题从首字符开始查找和计数,发现不同的就记下刚才数到的,数万了结果也出来了!其中只有少许逻辑判断!
第二题用实现可比较的接口去弄!
第三题我就不多说了!
第四题考你线程!
第五题我不想说!
#9
1,5用正则表达式应该会稍简单,第2个实现Comparable接口后,用Collections.sort(List...)方法,第3,4应该不难
#10
ding
#11
会者不难
难者不会……
难者不会……
#12
第五题 ,给你个高效的代码:
package com.java.ccc;
public class NumToChinise {
String str = null;
String [] strunit = {"拾","百","千","万","亿","兆"};
String [] strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] s = new String[2] ;
String [] stname = {"角","分","厘"};
static StringBuffer sf = new StringBuffer();
NumToChinise(int str)
{
this.str = str+"";
}
public void Chinise(String[] strby){
//最多三个0 最多取四位
int tt = 0;
for(int i = 0 ; i < strby[0].length(); ){
if(Integer.parseInt(strby[0].substring(0,1)) == 0 ){
strby[0] = strby[0].toString().substring(1);
if(tt == 0 && strby[0].length() != 0 && Integer.parseInt(strby[0]) != 0){
//System.out.print(strnum[0]);
sf.append(strnum[0]);
tt = 1 ;
}
}else
{
//System.out.print(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
sf.append(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
if(strby[0].length()-2 >= 0){
sf.append(strunit[strby[0].length()-2]);
//System.out.print(strunit[strby[0].length()-2]);
}
strby[0] = strby[0].toString().substring(1);
tt = 0;
}
}
}
public StringBuffer tochinise5(String str)
{
String st[] = str.split("\\.");
//System.out.println(st.length);
for(int i = 0 ; i < st[0].length()&& st[0].length()<= 9; )
{
if(st[0].toString().length() < 5 )
{
Chinise(st);
sf.append("元");
//System.out.print("元");
}
if(st[0].toString().length() >= 5 && st[0].toString().length() <9)
{
s[0]= st[0].substring(0,st[0].toString().length() - 4);
Chinise(s);
//System.out.print("万");
sf.append("万");
st[0] = st[0].substring(st[0].toString().length() - 4);
}
if(st[0].toString().length() >= 9 && st[0].toString().length() <=12)
{
s[0]= st[0].substring(0,st[0].toString().length() - 8);
Chinise(s);
sf.append("亿");
//System.out.print("亿");
st[0] = st[0].substring(st[0].toString().length() - 8);
}
}
endTochinise(st);
return sf;
}
public void endTochinise(String[] endstr)
{
if(endstr.length>1){
int ss = 0;
endstr[1] = endstr[1].toString().substring(0,3);
for(int i=0 ; i < 3 ; i++)
{
if(Integer.parseInt(endstr[1].substring(0,1)) == 0 )
{
//System.out.print(endstr[1].toString().substring(0, 1)+stname[i]);
sf.append(endstr[1].toString().substring(0, 1)+stname[i]);
endstr[1] = endstr[1].toString().substring(1);
ss = 1;
}else
{
if(endstr[1].length()-1 >= 0){
//System.out.print(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
sf.append(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
}
endstr[1] = endstr[1].toString().substring(1);
ss = 0;
}
}
}
}
}
package com.java.ccc;
public class NumToChinise {
String str = null;
String [] strunit = {"拾","百","千","万","亿","兆"};
String [] strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String [] s = new String[2] ;
String [] stname = {"角","分","厘"};
static StringBuffer sf = new StringBuffer();
NumToChinise(int str)
{
this.str = str+"";
}
public void Chinise(String[] strby){
//最多三个0 最多取四位
int tt = 0;
for(int i = 0 ; i < strby[0].length(); ){
if(Integer.parseInt(strby[0].substring(0,1)) == 0 ){
strby[0] = strby[0].toString().substring(1);
if(tt == 0 && strby[0].length() != 0 && Integer.parseInt(strby[0]) != 0){
//System.out.print(strnum[0]);
sf.append(strnum[0]);
tt = 1 ;
}
}else
{
//System.out.print(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
sf.append(strnum[Integer.parseInt(strby[0].toString().substring(0, 1))]);
if(strby[0].length()-2 >= 0){
sf.append(strunit[strby[0].length()-2]);
//System.out.print(strunit[strby[0].length()-2]);
}
strby[0] = strby[0].toString().substring(1);
tt = 0;
}
}
}
public StringBuffer tochinise5(String str)
{
String st[] = str.split("\\.");
//System.out.println(st.length);
for(int i = 0 ; i < st[0].length()&& st[0].length()<= 9; )
{
if(st[0].toString().length() < 5 )
{
Chinise(st);
sf.append("元");
//System.out.print("元");
}
if(st[0].toString().length() >= 5 && st[0].toString().length() <9)
{
s[0]= st[0].substring(0,st[0].toString().length() - 4);
Chinise(s);
//System.out.print("万");
sf.append("万");
st[0] = st[0].substring(st[0].toString().length() - 4);
}
if(st[0].toString().length() >= 9 && st[0].toString().length() <=12)
{
s[0]= st[0].substring(0,st[0].toString().length() - 8);
Chinise(s);
sf.append("亿");
//System.out.print("亿");
st[0] = st[0].substring(st[0].toString().length() - 8);
}
}
endTochinise(st);
return sf;
}
public void endTochinise(String[] endstr)
{
if(endstr.length>1){
int ss = 0;
endstr[1] = endstr[1].toString().substring(0,3);
for(int i=0 ; i < 3 ; i++)
{
if(Integer.parseInt(endstr[1].substring(0,1)) == 0 )
{
//System.out.print(endstr[1].toString().substring(0, 1)+stname[i]);
sf.append(endstr[1].toString().substring(0, 1)+stname[i]);
endstr[1] = endstr[1].toString().substring(1);
ss = 1;
}else
{
if(endstr[1].length()-1 >= 0){
//System.out.print(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
sf.append(strnum[Integer.parseInt(endstr[1].toString().substring(0, 1))]+stname[i]);
}
endstr[1] = endstr[1].toString().substring(1);
ss = 0;
}
}
}
}
}
#13
仔细一看不是太难!
但事实上还是蛮有难度的!
这是上机题吧。啥时候联系联系。
但事实上还是蛮有难度的!
这是上机题吧。啥时候联系联系。
#14
第一
/*
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*/
public class Test{
public static void main(String[] args){
String content = "aaaddxxxxddddxxxx";
getMaxLength(content);
}
private static void getMaxLength(String content){
if(content == null || content.length() == 0){
throw new IllegalArgumentException("content is invalid.");
}
String maxStr = null;
int maxCount = 0;
String tempStr = null;
int tempCount = 0;
while(content.length() != 0){
tempStr = content.substring(0,1);
tempCount = content.length() - content.replaceAll(tempStr,"").length();
content = content.replaceAll(tempStr,"");
if(tempCount > maxCount){
maxStr = tempStr;
maxCount = tempCount;
}
}
System.out.println("maxStr: " + maxStr + " Total: " + maxCount);
}
}
#15
#16
面试的时候,考上机题的多吗?
上机题考试挺郁闷的。
上机题考试挺郁闷的。
#17
我是搞C#的,第一题的思路就是:
循环字符串的长度,判断下一位与上一位是否相等,当发现不等时,记下上一位是哪个字符及位数。最后比较位数了。
循环字符串的长度,判断下一位与上一位是否相等,当发现不等时,记下上一位是哪个字符及位数。最后比较位数了。
#18
我觉得这个不会太难
#19
这个好像不错,但效率好像不太高了吧
#20
回帖赚积分。
#21
public static String maxLength(String s){
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() > m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() > m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
#22
#23
一个一个字符的整已经是上古时代的事情了,大家要习惯用jdk里的工具啊
#24
public static String maxLength(String s){
String rs = "";
Pattern p = Pattern.compile("([a-z|A-Z])\\1+");
Matcher m = p.matcher(s);
while (m.find()){
rs = rs.length() >= m.group().length() ? rs :m.group();
}
if(rs.length()>1){
return rs.substring(0,1)+","+rs.length();
}else{
return "GOD";
}
}
#25
第5题程序(仅供参考):
//编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七
import java.util.*;
public class Change{
public static void main(String [] args){
Scanner reader=new Scanner(System.in);
System.out.print("请输入一个整数(0~99999):");
String s=reader.nextLine();
char a[]=new char[s.length()];
String b[]={"万","千","百","十"," "};
System.out.println("您输入的整数为(0~99999):"+s);
System.out.print(s+"对应中文为:");
for(int i=0;i<s.length();i++){
a[i]=s.charAt(i);
switch(a[i]){
case '0':System.out.print("零");break;
case '1':System.out.print("壹");break;
case '2':System.out.print("贰");break;
case '3':System.out.print("叁");break;
case '4':System.out.print("肆");break;
case '5':System.out.print("伍");break;
case '6':System.out.print("陆");break;
case '7':System.out.print("柒");break;
case '8':System.out.print("捌");break;
case '9':System.out.print("玖");break;
default:System.out.print("输入错误!");
}
switch(s.length()){
case 1:break;
case 2:System.out.print(b[i+3]);break;
case 3:System.out.print(b[i+2]);break;
case 4:System.out.print(b[i+1]);break;
case 5:System.out.print(b[i]);break;
}
}
System.out.println();
}
}
//编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七
import java.util.*;
public class Change{
public static void main(String [] args){
Scanner reader=new Scanner(System.in);
System.out.print("请输入一个整数(0~99999):");
String s=reader.nextLine();
char a[]=new char[s.length()];
String b[]={"万","千","百","十"," "};
System.out.println("您输入的整数为(0~99999):"+s);
System.out.print(s+"对应中文为:");
for(int i=0;i<s.length();i++){
a[i]=s.charAt(i);
switch(a[i]){
case '0':System.out.print("零");break;
case '1':System.out.print("壹");break;
case '2':System.out.print("贰");break;
case '3':System.out.print("叁");break;
case '4':System.out.print("肆");break;
case '5':System.out.print("伍");break;
case '6':System.out.print("陆");break;
case '7':System.out.print("柒");break;
case '8':System.out.print("捌");break;
case '9':System.out.print("玖");break;
default:System.out.print("输入错误!");
}
switch(s.length()){
case 1:break;
case 2:System.out.print(b[i+3]);break;
case 3:System.out.print(b[i+2]);break;
case 4:System.out.print(b[i+1]);break;
case 5:System.out.print(b[i]);break;
}
}
System.out.println();
}
}
#26
没事时写一下,呵呵
#27
搞半天做了一个
String a="aaaaaaaabbbxxxxxxxxxc";
int []v_k=new int['z'];
for(int i=0;i<a.length();i++){
v_k[a.charAt(i)]++;
}
int max=0;
int index=0;
for(int i=0;i<v_k.length;i++){
if(max<v_k[i]){
max=v_k[i];
index=i;
}
}
System.out.println(((char)index)+" "+max);
String a="aaaaaaaabbbxxxxxxxxxc";
int []v_k=new int['z'];
for(int i=0;i<a.length();i++){
v_k[a.charAt(i)]++;
}
int max=0;
int index=0;
for(int i=0;i<v_k.length;i++){
if(max<v_k[i]){
max=v_k[i];
index=i;
}
}
System.out.println(((char)index)+" "+max);
#28
不是很难,没有涉及到很深的算法,如果有算法问题,估计更郁闷死你
#29
3
public class Fruit {
private int weight;
private Color color;
public Fruit(){
}
public int getWeight() {
return weight;
}
protected void setWeight(int weight) {
this.weight = weight;
}
public Color getColor() {
return color;
}
protected void setColor(Color color) {
this.color = color;
}
public String toString(){
return "This is a "+color.toString()+" "+this.getClass().getSimpleName()+" its weight is "+weight;
}
}
public class Apple extends Fruit {
public Apple(int weight, Color color){
super();
this.setWeight(weight);
this.setColor(color);
}
}
public class Pear extends Fruit {
public Pear(int weight, Color color){
super();
this.setWeight(weight);
this.setColor(color);
}
}
public enum Color {
GREEN, RED, YELLOW;
}
public class FruitBox {
private List<Fruit> fruits;
public int size;
public FruitBox(){
fruits = new ArrayList<Fruit>();
}
public void addFruit(Fruit fruit){
this.fruits.add(fruit);
size++;
}
public Fruit getFruit(int index){
return this.fruits.get(index);
}
public static void main(String[] args){
FruitBox fruitbox = new FruitBox();
fruitbox.addFruit(new Apple(10, Color.GREEN));
fruitbox.addFruit(new Pear(15, Color.YELLOW));
fruitbox.addFruit(new Apple(13, Color.RED));
for (int i =0;i < fruitbox.size; i++){
System.out.println(fruitbox.getFruit(i).toString());
}
}
}
#30
有难度啊。。。。
#31
第一个题也好了,但可能算法不是很好。
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730495.aspx
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730495.aspx
#32
涉足尚且。。。
发个帖顶下赚积分。。。
发个帖顶下赚积分。。。
#33
第一个题也完成了,但对于连续0的处理还不是很好,需要完善,但是大概思路是这样的。
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx
#34
UP!!!!!!!!!!
#35
好~ !
#36
过来学习一下..
#37
学习一下!
#38
最后一题,抽空做了一下
package Test;
import java.util.Scanner;
public class Demo5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
show();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}
}
package Test;
import java.util.Scanner;
public class Demo5 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
show();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}
}
#39
回帖是美德
#40
抽空过来学习......
#41
差距 .
#42
第五题:
/*
5. 编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,
没有小数。例:输入“3587”,返回“三千伍百八十七”。
*/
//package com.ricky.www;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Test{
public static void main(String[] args){
System.out.println("Input a number[0 - 99999]: ");
Scanner keyboard = new Scanner(System.in);
String content = keyboard.nextLine();
printValue(content);
}
private static boolean isValid(String content){
//有效性判断.
int num = 0;
try{
num = Integer.valueOf(content);
}catch(NumberFormatException e){
System.err.println("'content = " + content +
" ' is not a valid number.");
return false;
}
if(content.length() > 5){
System.err.println("The number is " +
"input is invalid. arange[1 - 99999]");
return false;
}
if(content.indexOf("0") == 0){
System.err.println("'content = " + content +
" ' is not a valid number.");
return false;
}
return true;
}
private static String printValue(String content){
if(!isValid(content)){
return null;
}
//壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、萬
String nums[] = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
String sign[] = {"拾","佰","仟","萬"};
content = content.replaceAll("(?<=\\d)(?=\\d)",",");//用,分隔数字
String temp = content.replaceAll("(,0)*$","");//去除最后的零的部分
int gaps = temp.length() == content.length() ? temp.length() : temp.length() + 1;
String regex = "(.*),(.*)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(content);
int i = 0;
while(matcher.find()){
//将修饰符加上去
content = matcher.group(1) + sign[i ++] + matcher.group(2);
matcher = pattern.matcher(content);
}
content = content.substring(0,gaps);//截取有效长度
content = content.replaceAll("0.","零");//将诸如 1024 中的 0 进行处理
for(i = 1 ; i <= 9 ; i ++){
content = content.replaceAll("" + i,nums[i]);//将数字转为中文
}
System.out.println(content);
return content;
}
}
#43
第一题:
/*
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*/
//package com.ricky.www;
public class Test{
public static void main(String[] args){
String content = "aaaddxxxxddddxxxx";
int max = 0;
String result = null;
String after = null;
int count = 0;
while(content.length() != 0){
after = content.replaceAll("^(\\w)\\1*","");
count = content.length() - after.length();
if(count > max){
max = count;
result = content.substring(0,1);
}
content = after;
}
System.out.println(result + " , " + max);
}
}
#44
第二题
/*
2. 现有一个类person有三个属性,分别是name,age,sex。
有一个List对象,保存了很多person对象的实例,
请编写一个函数,对List里的实例进行排序。
条件:18岁以上的人,排序顺序:性别,年龄,姓名全部降序。
*/
//package com.ricky.www;
import java.util.ArrayList;
import java.util.Collections;
public class Test{
public static void main(String[] args){
Person p1 = new Person("ricky",23,"B");
Person p2 = new Person("boy",15,"B");
Person p3 = new Person("girl",16,"G");
Person p4 = new Person("jennie",22,"G");
ArrayList<Person> list = new ArrayList<Person>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
Person.setCompareSign(Person.NAME);//通过name来排序
Collections.sort(list);
print(list);
System.out.println("-----------------------------------------");
Person.setCompareSign(Person.AGE);//通过age来排序
Collections.sort(list);
print(list);
System.out.println("-----------------------------------------");
Person.setCompareSign(Person.SEX);//通过sex来排序
Collections.sort(list);
print(list);
}
public static void print(ArrayList<Person> list){
for(Person p : list){
System.out.println(p);
}
}
//-----------------------------------------
private static class Person implements Comparable<Person>{
private static int sign = 3;
private final static int NAME = 1;
private final static int AGE = 2;
private final static int SEX = 3;
public Person(){
// default constructor
}
public Person(String name,int age,String sex){
this.name = name;
this.age = age;
this.sex = sex;
}
public static void setCompareSign(int signValue){
//sign only can choose NAME , AGE or SEX
if((sign != NAME) && (sign != AGE) && (sign != SEX)){
throw new IllegalArgumentException(sign + " is invalid.");
}
sign = signValue;
}
public int compareTo(Person p){
if(sign == NAME){
return this.name.compareTo(p.name);
}else if(sign == AGE){
return age - p.age;
}
return this.sex.compareTo(p.sex);
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String getSex(){
return sex;
}
public String toString(){
return "name: " + name + " age: " + age + " sex: " + sex;
}
String name;
int age;
String sex;
}
}
#45
题目我收藏了,为跳槽做准备!不难!
#46
第三题
/*
3. 有一个水果箱(box),箱子里装有水果(fruit)。
每一种水果都有不同的重量(weight)和颜色(color),
水果有:苹果(apple),梨(pear)。可以向水果箱(box)里添加水果(addFruit),
也可以取出水果(getFruit)。请编写java代码实现上述功能。
*/
//package com.ricky.www;
import java.util.ArrayList;
public class Test{
public static void main(String[] args){
FruitBox box = new FruitBox();
Fruit[] fruits = {
new Apple(0.6,"RED"),
new Pear(0.5,"YELLOW"),
new Apple(0.8,"GREEN")
};
for(Fruit f : fruits){
box.addFruit(f);
}
box.toString();
box.getFruit();
box.toString();
}
private static abstract class Fruit{
public double weight;
public String color;
public Fruit(double weight,String color){
this.weight = weight;
this.color = color;
}
public abstract String toString();
}
public static class Apple extends Fruit{
public Apple(double weight,String color){
super(weight,color);
}
public String toString(){
return "apple:[weight=" + weight + ",color=" + color + "].";
}
}
public static class Pear extends Fruit{
public Pear(double weight,String color){
super(weight,color);
}
public String toString(){
return "pear:[weight=" + weight + ",color=" + color + "].";
}
}
private static class FruitBox{
ArrayList<Fruit> list = new ArrayList<Fruit>();
public void addFruit(Fruit fruit){
list.add(fruit);
}
public void addFruit(int index , Fruit fruit){
list.add(index,fruit);
}
public Fruit getFruit(){
return list.remove(0);
}
public Fruit getFruit(int i){
return list.remove(i);
}
public String toString(){
for(Fruit f : list){
System.out.println(f);
}
System.out.println("------------------------");
return null;
}
}
}
#47
#48
装B谁不会
#49
看见大段大段的代码就感觉离答案好远。。。唉。。。我很菜。。。
#50
第四题(modify方法)第五题(show方法)
package Test;
import java.util.Scanner;
public class Demo5 {
private static int x = 0;
private static boolean flag=true;
public static void main(String[] args) {
modify();
}
public static void modify() {
Thread t1 = new Thread(){
@Override
public void run() {
while(flag) {
x-=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t2 = new Thread() {
@Override
public void run() {
while(flag) {
x-=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t3 = new Thread(){
@Override
public void run() {
while(flag) {
x+=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
Thread t4 = new Thread(){
@Override
public void run() {
while(flag) {
x+=1;
if(x==5) {
System.out.println(x);
flag = false;
}
}
}
};
t1.start();
t2.start();
t3.start();
t4.start();
}
public static void show() {
StringBuffer sbStr = new StringBuffer();
StringBuffer sbStr2 = new StringBuffer();
Scanner s = new Scanner(System.in);
int a =0;
try {
a = s.nextInt();
}catch(Exception e) {
e.printStackTrace();
}
String str = String.valueOf(a);
char[] c = str.toCharArray();
for(int i=0; i<c.length;i++) {
switch(c[i]) {
case '0' : sbStr.append("零");
break;
case '1' : sbStr.append("一");
break;
case '2' : sbStr.append("二");
break;
case '3' : sbStr.append("三");
break;
case '4' : sbStr.append("四");
break;
case '5' : sbStr.append("五");
break;
case '6' : sbStr.append("六");
break;
case '7' : sbStr.append("七");
break;
case '8' : sbStr.append("八");
break;
case '9' : sbStr.append("九");
break;
}
}
//System.out.println(sbStr.toString());
char[] cr = sbStr.toString().toCharArray();
int count = cr.length-1;
for(int i=0; i<cr.length;i++) {
sbStr2.append(cr[i]);
for(int j=0; j<cr.length ; j++) {
switch(count) {
case 1 : sbStr2.append("十");
break;
case 2 : sbStr2.append("百");
break;
case 3 : sbStr2.append("千");
break;
case 4 : sbStr2.append("万");
break;
}
count--;
break;
}
}
System.out.println(sbStr2.toString());
}
}