5个java面试题。。。请高手给个答案。。。

时间:2022-10-18 14:40:18
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。

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 ?

#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 
引用 2 楼 dalookzhu 的回复:
大哥。。这些题很基本。楼主真的去面试了?????哪里的???

#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;
}
}
}

}
}

#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


该回复于2010-12-03 10:49:43被版主删除

#16


面试的时候,考上机题的多吗?
上机题考试挺郁闷的。

#17


我是搞C#的,第一题的思路就是:
循环字符串的长度,判断下一位与上一位是否相等,当发现不等时,记下上一位是哪个字符及位数。最后比较位数了。

#18


我觉得这个不会太难

#19


引用 14 楼 micsolaris 的回复:
第一

Java code

/*
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*/

publi……

这个好像不错,但效率好像不太高了吧

#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";
}
}

#22


该回复于2010-07-14 11:17:54被版主删除

#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();
}
}
 

#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);

#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

#32


涉足尚且。。。
    发个帖顶下赚积分。。。

#33


第一个题也完成了,但对于连续0的处理还不是很好,需要完善,但是大概思路是这样的。
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx

#34


引用 5 楼 dr_lou 的回复:
1、
Java code
package com.xuz.csdn.july11;

public class FindLongRepert {

    public static void main(String[] args) {
        String result = "aaaabbbbbbcccdddaa";
        char[] array = result.to……

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());
  }

}

#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


该回复于2010-07-14 11:17:54被版主删除

#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 ?

#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 
引用 2 楼 dalookzhu 的回复:
大哥。。这些题很基本。楼主真的去面试了?????哪里的???

#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;
}
}
}

}
}

#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


该回复于2010-12-03 10:49:43被版主删除

#16


面试的时候,考上机题的多吗?
上机题考试挺郁闷的。

#17


我是搞C#的,第一题的思路就是:
循环字符串的长度,判断下一位与上一位是否相等,当发现不等时,记下上一位是哪个字符及位数。最后比较位数了。

#18


我觉得这个不会太难

#19


引用 14 楼 micsolaris 的回复:
第一

Java code

/*
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,
要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,
如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
要求:请考虑代码执行的效率并注意编码的风格。
*/

publi……

这个好像不错,但效率好像不太高了吧

#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";
}
}

#22


该回复于2010-07-14 11:17:54被版主删除

#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();
}
}
 

#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);

#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

#32


涉足尚且。。。
    发个帖顶下赚积分。。。

#33


第一个题也完成了,但对于连续0的处理还不是很好,需要完善,但是大概思路是这样的。
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx

#34


引用 5 楼 dr_lou 的回复:
1、
Java code
package com.xuz.csdn.july11;

public class FindLongRepert {

    public static void main(String[] args) {
        String result = "aaaabbbbbbcccdddaa";
        char[] array = result.to……

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());
  }

}

#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


该回复于2010-07-14 11:17:54被版主删除

#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());
  }



}