class Arrary{
private int arrary[]=null;
private static int foot;
Arrary(int num){
if(num>0){arrary=new int[num];}
else{arrary=new int[1];}
}
public boolean addnum(int num){
if(foot<arrary.length){
arrary[foot++]=num;
return true;
} else return false;
}
public int[] getdate(){
return arrary;
}
public void increment(int len){
int []newarr= new int[this.arrary.length+len];
System.arraycopy(arrary, 0, newarr, 0, arrary.length);
arrary=newarr;
}}
class sort extends Arrary {
sort(int num) {
super(num);
}
public int[] getdate(){
java.util.Arrays.sort(super.getdate());
return super.getdate();
}
}
class reverse extends Arrary{
reverse(int num) {
super(num);
}
public int[] getdate(){
int head=0;
int tail=super.getdate().length-1;
while((head!=tail)&&((head+1)!=tail)){
int t;
t=super.getdate()[head];
super.getdate()[head]=super.getdate()[tail];
super.getdate()[tail]=t;
head++;
tail--;
}
return super.getdate();
}
}
public class Arrarys { public static void main(String[] args) {
reverse a1=new reverse(4);
System.out.println(a1.addnum(11));
System.out.println(a1.addnum(2));
System.out.println(a1.addnum(12));
System.out.println(a1.addnum(22));
for(int i=0;i<a1.getdate().length;i++){
System.out.println(a1.getdate()[i]);
}
}}写了一个将整型数组翻转的程序 为什么结果翻转不了呢?
求大神给新手解答~~
private int arrary[]=null;
private static int foot;
Arrary(int num){
if(num>0){arrary=new int[num];}
else{arrary=new int[1];}
}
public boolean addnum(int num){
if(foot<arrary.length){
arrary[foot++]=num;
return true;
} else return false;
}
public int[] getdate(){
return arrary;
}
public void increment(int len){
int []newarr= new int[this.arrary.length+len];
System.arraycopy(arrary, 0, newarr, 0, arrary.length);
arrary=newarr;
}}
class sort extends Arrary {
sort(int num) {
super(num);
}
public int[] getdate(){
java.util.Arrays.sort(super.getdate());
return super.getdate();
}
}
class reverse extends Arrary{
reverse(int num) {
super(num);
}
public int[] getdate(){
int head=0;
int tail=super.getdate().length-1;
while((head!=tail)&&((head+1)!=tail)){
int t;
t=super.getdate()[head];
super.getdate()[head]=super.getdate()[tail];
super.getdate()[tail]=t;
head++;
tail--;
}
return super.getdate();
}
}
public class Arrarys { public static void main(String[] args) {
reverse a1=new reverse(4);
System.out.println(a1.addnum(11));
System.out.println(a1.addnum(2));
System.out.println(a1.addnum(12));
System.out.println(a1.addnum(22));
for(int i=0;i<a1.getdate().length;i++){
System.out.println(a1.getdate()[i]);
}
}}写了一个将整型数组翻转的程序 为什么结果翻转不了呢?
求大神给新手解答~~
解决方案 »
- java初学者提问,com.microsoft.sqlserver.jdbc.SQLServerException: 没有为参数号 6 设置值,只是什么异常?
- 一个爬虫,怎样一边抓取网页一边在JTree中显示
- 08年底面sybase的一套比试题
- 大型程序的发展问题
- 请高手进来指点一下~~
- 我26岁了,有网络方面知识基础,刚开始学JAVA是否适合学习J2EE?
- 怎么用JAVA写个下雪的情景
- java调用oracle存储过程报错
- 奇怪的异常---“不支持的字符集 !!: DBConversion”
- 谁能够提供一个jbuilder 5的注册码??
- jacob word转pdf问题
- 自己写的贪吃蛇,谁能帮我修改下蛇头碰到蛇身的的功能函数
每次调用getdate(),返回一个数组。对这个数组的操作,并不影响原数组。
建议改下:
class reverse extends Arrary
{
reverse(int num)
{
super(num);
}
public int[] getdate()
{
int head=0;
int[] temp=super.getdate(); //temp 是返回的数组,一个新的数组。
int tail=temp.length-1; //下面都是对这个数组操作。
while((head!=tail)&&((head+1)!=tail))
{
int t;
t=temp[head];
temp[head]=temp[tail];
temp[tail]=t;
head++;
tail--;
}
return temp; //返回已经反序的数组。
}
}
public class Arrarys { public static void main(String[] args)
{
reverse a1=new reverse(4);
System.out.println(a1.addnum(11));
System.out.println(a1.addnum(2));
System.out.println(a1.addnum(12));
System.out.println(a1.addnum(22));
int[] temp1=a1.getdate(); //这块道理一样。
for(int i=0;i<temp1.length;i++)
{
System.out.println(temp1[i]);
}
}
}
for(int i=0;i<a1.getdate().length;i++){
System.out.println(a1.getdate()[i]);
}我认为上面这段代码其实是反转了两次,所以导致反转失败。
即在i<a1.getdate().length时已经执行了以此数组反转,
在System.out.println(a1.getdate()[i]);
时又进行了以此反转,反反得正,导致输出的结果和原数组一样。
不知正确与否,请高手指正。第一次回答问题,一下哈!