1.找出如下数组中的最大元素和最小元素。并指出该元素在数组中的位置。 array[][]= {{4,1,22},{6,7,3,15},{18},{11,9}}
分析:此题主要是考双重for循环的二维数组的遍历(容易级别)
代码实现如下:
class Test2
{
public static void main(String[] args)
{
int [][]a = {{4,9}};
int max=a[0][0],min=a[0][0],xi=0,xj=0,ni=0,nj=0;
for(int i =0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
if(max<a[i][j]){
max=a[i][j];
xi=i;
xj=j;
}
if(min>a[i][j]){
min=a[i][j];
ni=i;
nj=j;
}
}
}
System.out.println("max:"+max+" position:"+xi+","+xj+" min:"+min+" position:"+ni+","+nj);
}
}
2.请写一个单例模式的程序。
分析:此处不仅仅是设计一个简单的单例,应该考虑程序的效率,安全性的问题。
代码实现如下:
public class Test3
{
public static void main(String[] args)
{
System.out.println(A.getA());
}
}
class A
{
private A(){}
public static A a=null;;
public static A getA(){
if(a==null){
synchronized(A.class){
if(a==null){
a=new A();
}
}
}
return a;
}
}
3.写一段代码,在以下文本中搜索并打印包含单词your(不区分大小写)的句子,并按出现次数由大到小输出。
Make me Yourself at home
None of your ourrise business
I will be more careful
How about going to a move
Your life is myour own our affair
分析:要从文本中读取,需要IO流,要匹配字符串要正则,要排序,要记录出现次数可以用键值对形式的Map来装数据。
应该注意熟悉的点:正则的实现,map按键值排序的实现
代码实现如下:
package net.hncu.d0725;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo1 {
public static void main(String[] args) {
File file = new File("1.txt");
Map<String,Integer> map = new HashMap<String,Integer>();
Map<String,Integer> sortedMap = new HashMap<String,Integer>();
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String buff=null;
while((buff=reader.readLine())!=null) {
String key="your";
int i = pick(buff.toLowerCase(),key);
if(i>0) {
map.put(buff,i);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sortedMap=sortMapByValue(map);
for(String s : sortedMap.keySet()) {
System.out.println(s+" num:"+sortedMap.get(s));
}
}
/**
* 按value值给Map排序
* @param oriMap
* @return
*/
public static Map<String,Integer> sortMapByValue(Map<String,Integer> oriMap) {
Map<String,Integer> sortedMap = new LinkedHashMap<String,Integer>();
if (oriMap != null && !oriMap.isEmpty()) {
List<Map.Entry<String,Integer>> entryList = new ArrayList<Map.Entry<String,Integer>>(oriMap.entrySet());
Collections.sort(entryList,new Comparator<Map.Entry<String,Integer>>() {
public int compare(Entry<String,Integer> entry1,Entry<String,Integer> entry2) {
int value1 = 0,value2 = 0;
value1=entry1.getValue();
value2=entry2.getValue();
return value2 - value1;
}
});
Iterator<Map.Entry<String,Integer>> iter = entryList.iterator();
Map.Entry<String,Integer> tmpEntry = null;
while (iter.hasNext()) {
tmpEntry = iter.next();
sortedMap.put(tmpEntry.getKey(),tmpEntry.getValue());
}
}
return sortedMap;
}
/**
* 正则匹配找字符串中的另一个字符串
* @param str
* @param key
* @return
*/
public static int pick(String str,String key) {
int count = 0;
Pattern p = Pattern.compile(key);
Matcher m = p.matcher(str);
while(m.find()) {
count++;
}
return count;
}
}
4.Java实现统计D:/test ..txt文件出现的数字,汉字,统计个数,汉字,行数,空格。
分析:要读文件要IO,要匹配字符要正则
代码实现:
package net.hncu.d0725;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Demo2 {
public static void main(String[] args) {
File file = new File("resource/2.txt");
int num=0;
int letter=0;
int word=0;
int line=0;
int space=0;
try {
BufferedReader reader = new BufferedReader(new FileReader(file));
String buff=null;
while((buff=reader.readLine())!=null) {
num+=select(buff,"num");
letter+=select(buff,"letter");
word+=select(buff,"word");
space+=select(buff,"space");
line++;
}
System.out.printf("num:"+num+" letter:"+letter+" word:"+word+" space:"+space+" line:"+line);
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static int select(String str,String key) {
String rule=null;
switch(key) {
case "num":
rule="d";
break;
case "letter":
rule="[a-zA-Z]";
break;
case "space":
rule="s";
break;
case "word":
rule="[u4e00-u9fa5]";
break;
}
int count=0;
Pattern p = Pattern.compile(rule);
Matcher m = p.matcher(str);
while(m.find()) {
count++;
}
return count;
}
}
5.给定四个线程,id分别是aa,bb,cc,dd,请用Java实现循环输出10次aabbccdd。
分析:待定
代码实现:
package net.hncu.d0725;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Demo3 {
private static int state = 0;
public static void main(String[] args) {
final Lock l = new ReentrantLock();
Thread A = new Thread(new Runnable(){
@Override
public void run() {
int i = 0;
while (state<=40) {
l.lock();
if(state%4==0){
System.out.print(++i+"AA");
state ++;
}
l.unlock();
}
}
});
Thread B = new Thread(new Runnable(){
@Override
public void run() {
while (state<=40) {
l.lock();
if(state%4==1){
System.out.print("BB");
state ++;
}
l.unlock();
}
}
});
Thread C = new Thread(new Runnable(){
@Override
public void run() {
while (state<=40) {
l.lock();
if(state%4==2){
System.out.print("CC");
state ++;
}
l.unlock();
}
}
});
Thread D = new Thread(new Runnable(){
@Override
public void run() {
while (state<=40) {
l.lock();
if(state%4==3){
System.out.println("DD");
state ++;
}
l.unlock();
}
}
});
A.start();
B.start();
C.start();
D.start();
}
}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|