关于java函数调用的问题?
我有以下一个java程序:package javatest1;
import java.util.ArrayList;
import java.util.List;
public class javatest1 extends common{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/* String c="Hello World!";
String d="您好!";
String e="0123456789";
stringchangeasc(c);
printseparator();
stringchangeasc(d);
printseparator();
stringchangeasc(e);
printseparator(); */
/*String c="Hello World! Welcome China![520]";
print("原字符串是:"+c);
printseparator();
StringBuilder resultstring=stringchangcw(c);
StringBuilder resultstring2=stringchangeasc(c);;
print("在原字符的基础中,每一个字符串大写改为小写,小写改为大写,不是字母不改变:"+resultstring);
printseparator();
print("原字符串每一个字符的ascii码:");
print(resultstring2);
printseparator();*/
/*int cai = 0;
char[] ca;
List cb=new ArrayList();
StringBuilder sb=new StringBuilder();
ca = c.toCharArray();
for(int i=0;i<ca.length;++i)
{
if(ca[i]>65 && ca[i]<90)
{
cai=ca[i]+32;
}
else
if(ca[i]>97 && ca[i]<122)
{
cai=ca[i]-32;
}
else
{
cai=ca[i];
}
//cai=ca[i]+32;
cb.add(cai);
}
for(int j=0;j<cb.size();++j)
{
int obji=(int) cb.get(j);
char oi=(char)obji;
sb.append(oi);
}
print(sb); */
//int result1=argadd(5);
//int result2=argadd(5,4);
//int result3=argadd(1,2,3);
//int result4=argadd(5,7,8,2,3,1,4,6,9,10);
//int result5=argmax(5,7,8,2,3,1,4,10,6,9,15);
// int result6=argmin(5,7,8,2,3,1,4,10,6,9,15);
int[] result8=argascsort(5,7,8,2,3,1,4,10,6,9,15);
int[] result9=argdescsort(5,7,8,2,3,1,4,10,6,9,15);
//int[] result8=argascsort(5,4,3);
//int[] result8=argascsort(8,7,5);
//print(8);
// print(7);
// print(5);
// print(result1);
// print(result2);
// print(result3);
// print(result4);
int len=result8.length;
for(int i=0;i<len;++i)
{
print("第"+(i+1)+"个数据是"+result8[i]);
}
printseparator();
int len2=result9.length;
for(int i=0;i<len2;++i)
{
print("第"+(i+1)+"个数据是"+result9[i]);
}
/*int a=1;
int b=2;
swapobj so1=new swapobj();
swapobj so2=new swapobj();
so1.swapvalue=1;
so2.swapvalue=2;
sortdata(so1,so2);
print(so1.swapvalue);
print(so2.swapvalue);*/
}
}
以下是common类文件内容:
package javatest1;
import java.util.ArrayList;
import java.util.List;
class swapobj<E>
{
E swapvalue;
}
public class common {
//简单打印
public static <E> void print(E value)
{
System.out.println(value);
}
//字符串每个字符变成ascii码
public static StringBuilder stringchangeasc(String value)
{
char[] ca;
int cai;
StringBuilder sb=new StringBuilder();
ca = value.toCharArray(); //把传过来的value转换为字符数组
for(int i=0;i<ca.length;++i)
{
cai=ca[i];
//print(ca[i]+"的ascii码是"+cai);
sb.append(ca[i]+"的ascii码是"+cai);
sb.append("\n");
}
return sb;
}
//如果输出内容是不同部分的话,用************************************隔开
public static void printseparator()
{
print("************************************");
}
//字符串中每一个字符串大写变小写,小写变大与,如果不是字母的话不改变
public static StringBuilder stringchangcw(String value)
{
int cai = 0;
char[] ca;
List cb=new ArrayList();
StringBuilder sb=new StringBuilder();
ca = value.toCharArray();
for(int i=0;i<ca.length;++i)
{
if(ca[i]>65 && ca[i]<90)
{
cai=ca[i]+32;
}
else
if(ca[i]>97 && ca[i]<122)
{
cai=ca[i]-32;
}
else
{
cai=ca[i];
}
//cai=ca[i]+32;
cb.add(cai);
}
for(int j=0;j<cb.size();++j)
{
int obji=(int) cb.get(j);
char oi=(char)obji;
sb.append(oi);
}
return sb;
}
//对传过来的值相加,得到传过来的值的和,传过来的参数个数不限,喜欢多少个参数都可以
public static int argadd(int... arg){
int sum = 0,len=arg.length;
for(int i=0;i<len;++i){
sum=sum+arg[i];
}
return sum;
}
//对传过来的值找出最大值,传过来的参数个数不限,喜欢多少个参数都可以
public static int argmax(int... arg){
int max = arg[0],len=arg.length;
for(int i=1;i<len;++i){
if(max<arg[i])
{
max=arg[i];
}
}
return max;
}
//对传过来的值找出最小值,传过来的参数个数不限,喜欢多少个参数都可以
public static int argmin(int... arg){
int min = arg[0],len=arg.length;
for(int i=1;i<len;++i){
if(min>arg[i])
{
min=arg[i];
}
}
return min;
}
//对传过来的值进行由小到大排序,传过来的参数个数不限,喜欢多少个参数都可以
public static int[] argascsort(int... arg){
int index,temp,len=arg.length;
//print(len);
// print(min);
for(int i=0;i<len-1;++i){
index=i;
for(int j=i+1;j<len;++j)
{
if(arg[index]>arg[j])
{
index=j;
}
}
temp=arg[i];
arg[i]=arg[index];
arg[index]=temp;
}
return arg;
}
//对传过来的值进行由大到小排序,传过来的参数个数不限,喜欢多少个参数都可以
public static int[] argdescsort(int... arg){
//swapobj so1=new swapobj();
//swapobj so2=new swapobj();
int index,temp,len=arg.length;
for(int i=0;i<len-1;++i){
index=i;
for(int j=i+1;j<len;++j)
{
if(arg[index]<arg[j])
{
index=j;
}
}
temp=arg[i];
arg[i]=arg[index];
arg[index]=temp;
// so1.swapvalue=arg[i];
// so2.swapvalue=arg[index];
//sortdata(so1,so2);
}
return arg;
}
//交换传过来的value1和value2的值
public static void sortdata(swapobj value1,swapobj value2)
{
swapobj temp = new swapobj();
temp.swapvalue=value1.swapvalue;
value1.swapvalue=value2.swapvalue;
value2.swapvalue=temp.swapvalue;
}
}
这个程序运行没有问题,我就把
/*int a=1;
int b=2;
swapobj so1=new swapobj();
swapobj so2=new swapobj();
so1.swapvalue=1;
so2.swapvalue=2;
sortdata(so1,so2);
print(so1.swapvalue);
print(so2.swapvalue);*/
前面的/*和后面的*/去掉,输出结果是:
第1个数据是1
第2个数据是2
第3个数据是3
第4个数据是4
第5个数据是5
第6个数据是6
第7个数据是7
第8个数据是8
第9个数据是9
第10个数据是10
第11个数据是15
************************************
第1个数据是15
第2个数据是10
第3个数据是9
第4个数据是8
第5个数据是7
第6个数据是6
第7个数据是5
第8个数据是4
第9个数据是3
第10个数据是2
第11个数据是1
2
1
这个输出结果是我想要的,即说明sortdata这个交换函数我是编对的,没有问题!好,我就把common文件中的argdescsort方法中的
//swapobj so1=new swapobj();
//swapobj so2=new swapobj();
// so1.swapvalue=arg[i];
// so2.swapvalue=arg[index];
//sortdata(so1,so2);
把
temp=arg[i];
arg[i]=arg[index];
arg[index]=temp;
改为
//temp=arg[i];
//arg[i]=arg[index];
//arg[index]=temp;
这五句话中前面的//全部去掉,但一去掉输出结果是以下输出的内容:
第1个数据是1
第2个数据是2
第3个数据是3
第4个数据是4
第5个数据是5
第6个数据是6
第7个数据是7
第8个数据是8
第9个数据是9
第10个数据是10
第11个数据是15
************************************
第1个数据是15
第2个数据是10
第3个数据是9
第4个数据是8
第5个数据是7
第6个数据是6
第7个数据是5
第8个数据是4
第9个数据是3
第10个数据是2
第11个数据是1
2
1
即sortdata在javatest1类执行是正常的,在common类中的argdescsort方法中执行时不知发生了什么,使程序运行没有达到目标,请各位高手指教!