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”,返回“三千伍百八十七”。

解决方案 »

  1.   

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

  2.   

    少发了点代码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];
    }
      

  3.   

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

  4.   

    2、没看懂。请给个实例。 18岁以上的怎么办? 18岁以下的全部降序是什么意思?
    类似数据库的 order by sex desc,age desc,name desc ?
      

  5.   

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

    }
    }
      

  6.   

    1,5用正则表达式应该会稍简单,第2个实现Comparable接口后,用Collections.sort(List...)方法,第3,4应该不难
      

  7.   

    第五题 ,给你个高效的代码: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;
    }
    }
    }

    }
    }
      

  8.   

    第一/*
    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);
    }
    }
      

  9.   

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

  10.   

    一个一个字符的整已经是上古时代的事情了,大家要习惯用jdk里的工具啊
      

  11.   


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

  12.   

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

  13.   

    搞半天做了一个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);
      

  14.   

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

    }
    }
    }
      

  15.   

    第一个题也好了,但可能算法不是很好。
    http://blog.csdn.net/eve_zz/archive/2010/07/13/5730495.aspx
      

  16.   

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

  17.   

    最后一题,抽空做了一下
    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());
      }}
      

  18.   

    第五题:/*
    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;
    }
    }
      

  19.   

    第一题:/*
    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);
    }
    }
      

  20.   

    第二题/*
    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;
    }
    }
      

  21.   

    第三题/*
    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;
    }
    }
    }
      

  22.   


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

    }
      

  23.   

    你连中国的E文都能拼错 I 服了 you
      

  24.   

    第二题:
    [code]
    public int compareTo(Person target){
    if(this.age <= 18){
    if(target.age <= 18){
    return 0;
    }else{
    return 11;
    }
    }else{
    if(target.age <= 18){
    return -1;
    }else{
    if(this.gender.compareTo(target.gender) == 0 && this.age.compareTo(target.age) == 0){
    return target.name.compareTo(this.getName());
    }
    if(this.getGender().compareTo(target.getGender()) == 0){
    return target.getAge().compareTo(this.getAge());
    }
    }
    }
    return target.getGender().compareTo(this.getGender());
    }
    [/code]
      

  25.   

    [code=java]
    public int compareTo(Person target){
    if(this.age <= 18){
    if(target.age <= 18){
    return 0;
    }else{
    return 11;
    }
    }else{
    if(target.age <= 18){
    return -1;
    }else{
    if(this.gender.compareTo(target.gender) == 0 && this.age.compareTo(target.age) == 0){
    return target.name.compareTo(this.getName());
    }
    if(this.getGender().compareTo(target.getGender()) == 0){
    return target.getAge().compareTo(this.getAge());
    }
    }
    }
    return target.getGender().compareTo(this.getGender());
    }
    [\code]
      

  26.   

    <code=java>
    public int compareTo(Person target){
    if(this.age <= 18){
    if(target.age <= 18){
    return 0;
    }else{
    return 11;
    }
    }else{
    if(target.age <= 18){
    return -1;
    }else{
    if(this.gender.compareTo(target.gender) == 0 && this.age.compareTo(target.age) == 0){
    return target.name.compareTo(this.getName());
    }
    if(this.getGender().compareTo(target.getGender()) == 0){
    return target.getAge().compareTo(this.getAge());
    }
    }
    }
    return target.getGender().compareTo(this.getGender());
    }
    </code>
      

  27.   


    用+的效果是两个及两个以上,没重复出现的排除在外了,减少了while (m.find())的次数,用*也能得到正确的结果。
      

  28.   

    我想知道,  这种题 所谓的面试 是让你说思路呢,还是让你写代码 
    如果是写代码 ,在什么环境下写,(给你一台电脑 ,给不给api ,或者  IDE工具,不会搞得跟应试考试吧,只有一个记事本)
      

  29.   

    貌似字符串"aabbbcccc"就不行了。
      

  30.   

    第一题
    public class FindCharMoreTimes { public static void main(String[] args) {
    String s = "aaaaaddxxxxdddvvvvvvvvvvvvvvvvvvvvddxxxx";
    Pattern p = Pattern.compile("(.)\\1+");
    Matcher m = p.matcher(s);
    int max = 0;
    char c = ' ';
    while (m.find()) {
    if (max < m.group(0).length()) {
    max = m.group(0).length();
    c = m.group(0).charAt(0);
    }
    } System.out.println("字母:" + c + " " + "次数:" + max); }}
      

  31.   

    第四题public class Threadone {
    public static void main (String args[]){
    Modifymult m1=new Modifymult();
    Modifyadd m2=new Modifyadd();
    Modifymult m3=new Modifymult();
    Modifyadd m4=new Modifyadd();
    new Thread(m1).start();
    new Thread(m2).start();
    new Thread(m3).start();
    new Thread(m4).start();

        
    }}class Modifymult implements Runnable{
    static int i=0; boolean flag =false;
    static String str ="";
    public synchronized void run(){
    synchronized (str){
    while (!flag)
    {i=i-1;
    if (i==5)
    {flag =true;
    System.out.println(i); System.exit(0);
    }
    }

    }
    }

    }class Modifyadd implements Runnable{
     boolean flag =false;
    static int p=0;
    public  void  run (){
    synchronized (Modifymult.str){
    while (!flag){
    p=Modifymult.i;
    if (p==5){
    System.out.println(Modifymult.i);
    flag=true;System.exit(0);
    }
    else
    {
    p++;
    Modifymult.i=p;
    }
    }
    }
    }
    }
      

  32.   


    五楼程序for循环运行到尾的时候就不可能发生else语句(在倒数第一个字母和倒数第二个字母相同的情况下)所以得对循环到尾进行处理。
    public class FindLongRepert {    public static void main(String[] args) {
            String result = "aaabbbbbfdddddddvvdsfbfdvfdnnnnnnnnnnnnn";
            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];
                }
                if (i==array.length-1){
                 if (maxCount < count) {
                        maxCount = count;
                        maxCh = ch;}
                       
                }
            }
            
            
            System.out.println(maxCh + " : " + maxCount);
        }}
      

  33.   


            /**
     * 将double型的金额数转换为人民币大写
     * 
     * @param 金额
     * @return 人民币大写
     */
    public static String changeToBig(double value) {
    boolean minus = false;
    if (value == 0) {
    return "零圆整";
    }
    if (value < 0) {
    value = Math.abs(value);
    minus = true;
    }
    char[] hunit = { '拾', '佰', '仟' }; // 段内位置表示
    char[] vunit = { '万', '亿', '兆' }; // 段名表示
    char[] digit = { '零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖' }; // 数字表示
    BigDecimal midVal = new BigDecimal(Math.round(value * 100)); // 转化成整形
    String valStr = String.valueOf(midVal); // 转化成字符串
    if(valStr.length() < 2){
    valStr = "0" + valStr;
    }
    String head = valStr.substring(0, valStr.length() - 2); // 取整数部分
    String rail = valStr.substring(valStr.length() - 2); // 取小数部分 String prefix = ""; // 整数部分转化的结果
    String suffix = ""; // 小数部分转化的结果
    // 处理小数点后面的数
    if (rail.equals("00")) { // 如果小数部分为0
    suffix = "整";
    } else {
    suffix = digit[rail.charAt(0) - '0'] + "角"
    + digit[rail.charAt(1) - '0'] + "分"; // 否则把角分转化出来
    }
    // 处理小数点前面的数
    char[] chDig = head.toCharArray(); // 把整数部分转化成字符数组
    boolean preZero = false; // 标志当前位的上一位是否为有效0位(如万位的0对千位无效)
    byte zeroSerNum = 0; // 连续出现0的次数
    for (int i = 0; i < chDig.length; i++) { // 循环处理每个数字
    int idx = (chDig.length - i - 1) % 4; // 取段内位置
    int vidx = (chDig.length - i - 1) / 4; // 取段位置
    if (chDig[i] == '0') { // 如果当前字符是0
    preZero = true;
    zeroSerNum++; // 连续0次数递增
    if ((idx == 0) && (vidx > 0) && (zeroSerNum < 4)) {
    prefix += vunit[vidx - 1];
    preZero = false; // 不管上一位是否为0,置为无效0位
    }
    } else {
    zeroSerNum = 0; // 连续0次数清零
    if (preZero) { // 上一位为有效0位
    prefix += digit[0]; // 只有在这地方用到'零'
    preZero = false;
    }
    prefix += digit[chDig[i] - '0']; // 转化该数字表示
    if (idx > 0) {
    prefix += hunit[idx - 1];
    }
    if ((idx == 0) && (vidx > 0)) {
    prefix += vunit[vidx - 1]; // 段结束位置应该加上段名如万,亿
    }
    }
    }
    if (prefix.length() > 0) {
    prefix += '圆'; // 如果整数部分存在,则有圆的字样
    }
    if (minus) {
    prefix = "负 " + prefix;
    }
    return prefix + suffix; //返回正确表示
    }
      

  34.   

    这里API和源码例子
    一个英文的,一个翻译的:
    http://apicode.gicp.net/class.do?api=selectByfatherIndex&father=255
    http://apicodecn.gicp.net/class.do?api=selectByfatherIndex&father=255
      

  35.   

    public class Comparators { public static java.util.Comparator getComparator() {
    return new java.util.Comparator() { public int compare(Object o1, Object o2) {
    if (o1 instanceof String) {
    return compare((String) o1, (String) o2);
    } else if (o1 instanceof Integer) {
    return compare((Integer) o1, (Integer) o2);
    } else if (o1 instanceof Person) {
    return compare((Person) o1, (Person) o2);
    } else {
    System.err.println("未找到合适的比较器");
    return 1; }
    } public int compare(String o1, String o2) {
    String s1 = (String) o1;
    String s2 = (String) o2;
    int len1 = s1.length();
    int len2 = s2.length();
    int n = Math.min(len1, len2);
    char v1[] = s1.toCharArray();
    char v2[] = s2.toCharArray();
    int pos = 0; while (n-- != 0) {
    char c1 = v1[pos];
    char c2 = v2[pos];
    if (c1 != c2) {
    return c1 - c2;
    }
    pos++;
    }
    return len1 - len2;
    } public int compare(Integer o1, Integer o2) {
    int val1 = o1.intValue();
    int val2 = o2.intValue();
    return (val1 < val2 ? -1 : (val1 == val2 ? 0 : 1));
    } public int compare(Boolean o1, Boolean o2) { return (o1.equals(o2) ? 0
    : (o1.booleanValue() == true ? 1 : -1)); } public int compare(Person o1, Person o2) {
    String firstname1 = o1.getFirstName();
    String firstname2 = o2.getFirstName();
    String lastname1 = o1.getLastName();
    String lastname2 = o2.getLastName();
    Boolean sex1 = o1.getSex();
    Boolean sex2 = o2.getSex();
    Integer age1 = o1.getAge();
    Integer age2 = o2.getAge();
    return (compare(firstname1, firstname2) == 0 ? (compare(
    lastname1, lastname2) == 0 ? (compare(sex1, sex2) == 0 ? (compare(
    age1, age2) == 0 ? 0 : compare(age1, age2))
    : compare(sex1, sex2))
    : compare(lastname1, lastname2))
    : compare(firstname1, firstname2)); } };
    }
    }
      

  36.   

    第五题
    public String convert(int param){
    String[] strArr = new String[]{"个","十","百","千","万"};
    String[] numStr = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    StringBuffer sf = new StringBuffer();
    boolean b = false;
    for(int i=(param+"").length()-1;i>=0;i--){
    String temp = (param+"").substring((param+"").length()-1-i, (param+"").length()-i);
    if("0".equals(temp)){
    if(b){
    continue;
    }
    b = true;
    sf.append(numStr[Integer.parseInt(temp)]);
    }else{
    b = false;
    sf.append(numStr[Integer.parseInt(temp)]).append(strArr[i]);
    }
    }
    String re = sf.toString();
    re = re.substring(0,re.length()-1);
    return re;
    }
      

  37.   

    bu na bai bu na 
      

  38.   


        public static String maxLength(String value) {
            char result = 0;
            char valueTmp = 0 ;
            int maxLength = 0;
            int lengthTmp = 1;
            char[] values = value.toCharArray();
            
            if (null == value || value.equals("")) {
                return "input error!";
            }
            for (int i = 0; i < values.length ; i++) {
                
                if (valueTmp != values[i]) {                if (lengthTmp > maxLength) {
                        result = valueTmp;
                        maxLength = lengthTmp;
                    }
                    valueTmp = values[i];
                    lengthTmp = 1;
                } else {
                    lengthTmp ++;
                }
                if (lengthTmp > maxLength && i == values.length-1) {
                    result = valueTmp;
                    maxLength = lengthTmp;
                }
            }
            return result+":"+maxLength;
        }