java传入char类型_java关于传任意类型参数的问题

这篇博客探讨了在Java中如何处理任意类型的参数,如实现argadd函数可以接受不同数量的参数并求和。同时,作者遇到了使用泛型在argmax函数中比较不同类型值的问题,希望找到一种无需重载即可支持多种类型的方法。
摘要由CSDN通过智能技术生成

2ebef30d2f576db8dbe620d13b89a96b.gif

编程论坛

JAVA论坛

java关于传任意类型参数的问题

小文文化

发布于

2017-09-07 15:51,

1541 次点击

我有以下一个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

{

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

{

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

{

print("第"+(i+1)+"个数据是"+result8[i]);

}

printseparator();

int len2=result9.length;

for(int i=0;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 swapvalue;

}

public class common {

//简单打印

public static 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

{

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

{

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

{

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

sum=sum+arg[i];

}

return sum;

}

//对传过来的值找出最大值,传过来的参数个数不限,喜欢多少个参数都可以

/*public static int argmax(int... arg){

int max = arg[0],len=arg.length;

for(int i=1;i

if(max

{

max=arg[i];

}

}

return max;

}*/

public static E argmax(E... arg){

E max = arg[0];

int len=arg.length;

for(int i=1;i

if(max

{

max=arg[i];

}

}

return max;

}

//对传过来的值找出最小值,传过来的参数个数不限,喜欢多少个参数都可以

public static int argmin(int... arg){

int min = arg[0],len=arg.length;

for(int i=1;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

index=i;

for(int j=i+1;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

index=i;

for(int j=i+1;j

{

if(arg[index]

{

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;

}

}

但运行程序时出现以下错误:

The operator < is undefined for the argument type(s) E, E

各位高手们,我想argmax这个函数的参数类型不只是int类型,传String,Char或者int都可以执行,但只是编写一个函数,不想编多个重载函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值