1.一个QUEUE类,有size,pop(),push()等方法,判断其中元素为null时,提醒客户已经没有元素了.
---------------------------------------------------------------
2.一副扑克牌,用程序洗牌,不能和原来的位置一样,从一到十三.没有大小王.
---------------------------------------------------------------
3.N个人围成一个圈,数到5后站出来,
---------------------------------------------------------------
4.newInstance()与new()的区别
---------------------------------------------------------------
5.java的测试单元 ,用jUnit来测试 CVS?
---------------------------------------------------------------
6.一个数组有两个数相同,把他们的索引下标找出来.
---------------------------------------------------------------
2.一副扑克牌,用程序洗牌,不能和原来的位置一样,从一到十三.没有大小王.
---------------------------------------------------------------
3.N个人围成一个圈,数到5后站出来,
---------------------------------------------------------------
4.newInstance()与new()的区别
---------------------------------------------------------------
5.java的测试单元 ,用jUnit来测试 CVS?
---------------------------------------------------------------
6.一个数组有两个数相同,把他们的索引下标找出来.
2. 随机数
3. 约瑟夫问题
4. 一般情况下 有newInstance()生成实例,因为没有public的构造方法 比如单例模式
5. ???
6. 用集合类处理 或者排序后再处理
(java不能创建泛型数组。)
*/import java.util.*;public class SqQueue<T>{
private int front;
private int rear;
private T[] base;
private int size;
//构造方法
//
public SqQueue(int size){
this.size=size+1;
//base =new T[size];//error
base=(T[])new Object[size+1];
front=rear=0;
}
//构造方法
//
public SqQueue(){
size=11;
//base=new T[10];//error.
base=(T[])new Object[11];
front=rear=0;
}
//返回队列最大的容量
//
public int size(){
return base.length-1;
}
//入队方法
//
public void enqueue(T elem) throws RuntimeException {
if((rear+1)%size==front){
throw new RuntimeException("Queue is full!");
}
base[rear]=elem;
rear=(rear+1)%size;
}
//出队方法
//
public T dequeue() throws RuntimeException{
if(front==rear){
throw new RuntimeException("Queue is empty!");
}
T e=base[front];
front=(front+1)%size;
return e;
}
//队空?
//
public boolean isEmpty(){
return front==rear;
}
//队满?
//
public boolean isFull(){
return (rear+1)%size==front;
}
//当前队的长度
//
public int length(){
return (rear-front+size)%size;
}
//测试
//
public static void main(String[] args){
SqQueue<Integer> sq=new SqQueue<Integer>(5);
System.out.println(sq.size());
sq.enqueue(7);
sq.enqueue(10);
sq.enqueue(6);
System.out.println("出队:"+sq.dequeue());
System.out.println("队的长度:"+sq.length());
sq.enqueue(8);
sq.enqueue(9);
sq.enqueue(4);
System.out.println(sq.isFull());
//sq.enqueue(5); //RuntimeException.
while(!sq.isEmpty()){
System.out.println("出队:"+sq.dequeue());
}
//sq.dequeue();//RuntimeException.
}
}
public class Card {
public CardSuit suit; //花色
public int value; //点数,1代表A,11代表J
public Card(CardSuit suit, int value) {
this.suit = suit;
this.value = value;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
switch(suit) {
case SPADE:
sb.append("黑桃");
break;
case HEART:
sb.append("红桃");
break;
case DIAMOND:
sb.append("方片");
break;
case CLUB:
sb.append("梅花");
break;
}
switch(value) {
case 1:
sb.append('A');
break;
case 11:
sb.append('J');
break;
case 12:
sb.append('Q');
break;
case 13:
sb.append('K');
break;
default:
sb.append(value);
}
return sb.toString();
}
}扑克类,表示一副扑克:
import java.util.Random;//纸牌的花色,分别是:黑桃,红心,方片,梅花
enum CardSuit {SPADE, HEART, DIAMOND, CLUB};//52张牌,没有大小王
public class Cards {
public Cards() {
cards = new Card[52];
int index = 0;
for(CardSuit suit:CardSuit.values()) {
for(int i=1; i<=13; i++)
cards[index++] = new Card(suit, i);
}
} public void showCards() {
for(Card c:cards) {
System.out.print(c);
System.out.print(" ");
}
System.out.println();
}
//洗牌
public void shuffle() {
Card[] target = new Card[52];
int i = 0, j = 26, index = 0, n;
Random rand = new Random();
//交错式洗牌
while(index<52) {
n = rand.nextInt(3) + 1;
while(n>0&&i<26) {
target[index++] = cards[i++];
n--;
}
n = rand.nextInt(3) + 1;
while(n>0&&j<52) {
target[index++] = cards[j++];
n--;
}
}
//切牌,把下半部分和上半部分互换位置
n = rand.nextInt(10)+20;
for(i=0; i<52; i++) {
cards[i] = target[(n+i)%52];
}
}
private Card[] cards;
}主函数,用于测试:
public class Main { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Cards cards = new Cards();
cards.showCards();
cards.shuffle();
cards.shuffle();
cards.shuffle();
cards.shuffle();
cards.shuffle();
cards.showCards();
}}
int[] ary = new int[]{0,5,6,9,1,0,2,4,21,11,7};
//初始化索引值为-1;
int index = -1;
int index2 = -1;
//嵌套循环搞定,
for(int i=0; i<ary.length; i++) {
for(int j=ary.length-1; j>i; j--) {
if(ary[i] == ary[j]) {
index = i;
index2 = j;
break;
}
}
}
if(index == -1 || index2 == -1) {
System.out.println("没有找到");
}else {
System.out.println("下标为:" + (index+1) + "的,和下标为:" + (index2+1) + "的值相同");
}
}
}
//运行结果
//第1个位置和第5个位置的值相同
还是说清楚吧,你想的没有错,如果条件满足的确进入了if(){}代码块,
break;只能跳出内层循环,对于此题目要求而言,应该能够满足要求;
但效率方面有待提高;有一办法可以解决,把for循环封装成一方法。该方法有一参数:数组引用
返回类型 int
用return 0 代替 break;解决问题了吧;