当前位置:编程学习 > JAVA >>

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

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”,返回“三千伍百八十七”。
--------------------编程问答-------------------- 函数是什么东东!! --------------------编程问答-------------------- 大哥。。这些题很基本。楼主真的去面试了?????哪里的??? --------------------编程问答-------------------- 第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();
}
--------------------编程问答-------------------- 少发了点代码

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];
}
--------------------编程问答-------------------- 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);
}

}
--------------------编程问答-------------------- 2、没看懂。请给个实例。 18岁以上的怎么办? 18岁以下的全部降序是什么意思?
类似数据库的 order by sex desc,age desc,name desc ? --------------------编程问答-------------------- 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();
}
}
}

}
}
--------------------编程问答-------------------- 都不难啊,
第一题从首字符开始查找和计数,发现不同的就记下刚才数到的,数万了结果也出来了!其中只有少许逻辑判断!
第二题用实现可比较的接口去弄!
第三题我就不多说了!
第四题考你线程!
第五题我不想说! --------------------编程问答-------------------- 1,5用正则表达式应该会稍简单,第2个实现Comparable接口后,用Collections.sort(List...)方法,第3,4应该不难 --------------------编程问答-------------------- ding 
引用 2 楼 dalookzhu 的回复:
大哥。。这些题很基本。楼主真的去面试了?????哪里的???
--------------------编程问答-------------------- 会者不难
难者不会…… --------------------编程问答-------------------- 第五题 ,给你个高效的代码:

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

}
}
--------------------编程问答-------------------- 仔细一看不是太难!
但事实上还是蛮有难度的!
这是上机题吧。啥时候联系联系。 --------------------编程问答-------------------- 第一

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


}
}
--------------------编程问答-------------------- --------------------编程问答-------------------- 面试的时候,考上机题的多吗?
上机题考试挺郁闷的。 --------------------编程问答-------------------- 我是搞C#的,第一题的思路就是:
循环字符串的长度,判断下一位与上一位是否相等,当发现不等时,记下上一位是哪个字符及位数。最后比较位数了。 --------------------编程问答-------------------- 我觉得这个不会太难 --------------------编程问答--------------------
引用 14 楼 micsolaris 的回复:
第一

Java code

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

publi……

这个好像不错,但效率好像不太高了吧 --------------------编程问答-------------------- 回帖赚积分。 --------------------编程问答-------------------- 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";
}
} --------------------编程问答-------------------- --------------------编程问答-------------------- 一个一个字符的整已经是上古时代的事情了,大家要习惯用jdk里的工具啊 --------------------编程问答--------------------

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";
}
}
--------------------编程问答-------------------- 第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();
}
}
  --------------------编程问答-------------------- 没事时写一下,呵呵 --------------------编程问答-------------------- 搞半天做了一个

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); --------------------编程问答-------------------- 不是很难,没有涉及到很深的算法,如果有算法问题,估计更郁闷死你 --------------------编程问答-------------------- 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());

}
}
}
--------------------编程问答-------------------- 有难度啊。。。。 --------------------编程问答-------------------- 第一个题也好了,但可能算法不是很好。
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730495.aspx --------------------编程问答-------------------- 涉足尚且。。。
    发个帖顶下赚积分。。。 --------------------编程问答-------------------- 第一个题也完成了,但对于连续0的处理还不是很好,需要完善,但是大概思路是这样的。
http://blog.csdn.net/eve_zz/archive/2010/07/13/5730573.aspx
--------------------编程问答--------------------
引用 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!!!!!!!!!! --------------------编程问答-------------------- 好~                                   ! --------------------编程问答-------------------- 过来学习一下.. --------------------编程问答-------------------- 学习一下! --------------------编程问答-------------------- 最后一题,抽空做了一下
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());
  }

}
--------------------编程问答-------------------- 回帖是美德 --------------------编程问答-------------------- 抽空过来学习...... --------------------编程问答--------------------              差距 .  --------------------编程问答-------------------- 第五题:

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


}
--------------------编程问答-------------------- 第一题:

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

--------------------编程问答-------------------- 第二题

/*
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;
}
}
--------------------编程问答-------------------- 题目我收藏了,为跳槽做准备!不难! --------------------编程问答-------------------- 第三题

/*
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;
}
}
}
--------------------编程问答-------------------- --------------------编程问答-------------------- 装B谁不会 --------------------编程问答-------------------- 看见大段大段的代码就感觉离答案好远。。。唉。。。我很菜。。。 --------------------编程问答--------------------
第四题(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());
  }



}
--------------------编程问答-------------------- 学习一下!! --------------------编程问答-------------------- 学习一下,收藏 --------------------编程问答-------------------- 楼主,强大,这都是最初级的,如果这不会的话,面试。。。。。 --------------------编程问答-------------------- 初学 过来学习下 --------------------编程问答--------------------
引用 24 楼 zhangdehai 的回复:
Java code

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.……

哥们儿,给解释下"\\1+"是什么意思啊??我用"\\1*"MS也可以啊。。。 --------------------编程问答-------------------- 发帖帮你顶一下,为了加分! --------------------编程问答-------------------- 思路还是比较容易出来 --------------------编程问答--------------------
引用 12 楼 jn789987 的回复:
第五题 ,给你个高效的代码:

package com.java.ccc;

public class NumToChinise {


String str = null;
String [] strunit = {"拾","百","千","万","亿","兆"};
String [] strnum = {"零","壹","贰","叁","肆","伍","陆","柒","捌",……



你连中国的E文都能拼错 I 服了 you
--------------------编程问答-------------------- 第二题:
[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] --------------------编程问答-------------------- [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] --------------------编程问答-------------------- <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> --------------------编程问答--------------------
引用 55 楼 zzxxj008 的回复:
引用 24 楼 zhangdehai 的回复:
Java code

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 = r……


用+的效果是两个及两个以上,没重复出现的排除在外了,减少了while (m.find())的次数,用*也能得到正确的结果。 --------------------编程问答-------------------- 我想知道,  这种题 所谓的面试 是让你说思路呢,还是让你写代码 
如果是写代码 ,在什么环境下写,(给你一台电脑 ,给不给api ,或者  IDE工具,不会搞得跟应试考试吧,只有一个记事本)

--------------------编程问答--------------------
引用 24 楼 zhangdehai 的回复:
Java code

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.……

----------强  厉害 --------------------编程问答-------------------- 学习一下 --------------------编程问答-------------------- 学习学习!! --------------------编程问答--------------------
引用 63 楼 jixiuffff 的回复:
我想知道,  这种题 所谓的面试 是让你说思路呢,还是让你写代码 
如果是写代码 ,在什么环境下写,(给你一台电脑 ,给不给api ,或者  IDE工具,不会搞得跟应试考试吧,只有一个记事本)
s --------------------编程问答-------------------- 学习下 --------------------编程问答--------------------

//学习
--------------------编程问答-------------------- 自从我回复之后,又有好多人回复了此贴,但是我发现有些代码是错误的。 --------------------编程问答-------------------- 人家说的不是单纯转成大写而是转成自然语言,比如3075是叁千零柒拾伍,3005是叁千零伍 --------------------编程问答-------------------- 新手路过,学习下! --------------------编程问答-------------------- 这么多,好东东,呵呵!学习 --------------------编程问答--------------------
引用 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 = re……

貌似字符串"aabbbcccc"就不行了。 --------------------编程问答-------------------- 第一题


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

}

}
--------------------编程问答-------------------- 第四题

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;
}
}
}
}
} --------------------编程问答-------------------- 好贴啊,这个帖子我看了一晚上啊,好好学习啊啊

我每个都试了一遍啊
--------------------编程问答-------------------- 受教啦 --------------------编程问答--------------------
引用 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 = re……




五楼程序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);
    }

}

--------------------编程问答-------------------- mark

有空再写 --------------------编程问答-------------------- 一堆一堆的代码  --------------------编程问答-------------------- 今天有点晚了,改天看一下 --------------------编程问答-------------------- 这些的却是很基本的啊,我想不难的 --------------------编程问答-------------------- 学习了.帮顶. --------------------编程问答--------------------       每天回帖即可获得10分可用分 --------------------编程问答--------------------

        /**
 * 将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; //返回正确表示
}
--------------------编程问答-------------------- 这里API和源码例子
一个英文的,一个翻译的:
http://apicode.gicp.net/class.do?api=selectByfatherIndex&father=255
http://apicodecn.gicp.net/class.do?api=selectByfatherIndex&father=255
--------------------编程问答--------------------
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));

}

};
}
}
--------------------编程问答-------------------- 什么公司出这样的题。虽然都会做,但看着就不想写 --------------------编程问答-------------------- 第五题
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;
}
--------------------编程问答-------------------- 每天10分哪,不拿浪费 --------------------编程问答-------------------- 进来学习 --------------------编程问答--------------------   沒分了!! --------------------编程问答-------------------- bu na bai bu na  --------------------编程问答-------------------- 飘过      新手 --------------------编程问答-------------------- 长见识了,哈哈 --------------------编程问答--------------------

    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;
    }
--------------------编程问答--------------------
引用 24 楼 zhangdehai 的回复:
Java code

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.lengt……

还是这个强大,简洁啊、、 --------------------编程问答-------------------- 学习了,谢谢分享 --------------------编程问答-------------------- 好贴,帮顶。。。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,