编写一个泛型类,适合于基本数据类型byte、short、int、long、float、double数组的排序与求和
这个一部分题目,这个部分我用的重载,因为使用泛型死活不成功。
package experiment6;
import java.io.*;
import java.util.*;
public class Types<T> {
T[] sorts(T[] temp) {
Arrays.sort(temp);
return temp;
}
String plus(String[] temp) {
String result = new String();
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
double plus(double[] temp) {
double result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
Integer plus(Integer[] temp) {
Integer result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
short plus(short[] temp) {
short result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
byte plus(byte[] temp) {
byte result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
float plus(float[] temp) {
float result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
long plus(long[] temp) {
long result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
List<T> extract(T[] temp,int n) {
Random rand = new Random();
boolean[] bool = new boolean[temp.length];
int t;
List<T> lists = new ArrayList<T>();
for (int i = 0; i < n; i++) {
do
t = rand.nextInt(temp.length);
while (bool[t]);
lists.add(temp[t]);
bool[t] = true;
}
return lists;
}
}
class UseTypes {
Scanner scanner = new Scanner(System.in);
int temp;
void score() {
System.out.println("请输入一组学生成绩,求平均数。");
System.out.print("请输入学生个数:");
temp = scanner.nextInt();
double[] score = new double[temp];
for (int i = 0; i < temp; i++) {
System.out.print("请输入成绩:");
score[i] = scanner.nextDouble();
}
Types<Double> types = new Types<Double>();
System.out.printf("学生平均成绩为: %.1f\n",types.plus(score)/temp);
}
void draw() {
System.out.println("请输入一组学生学号进行抽奖。");
System.out.println("请输入要抽取的学生个数:");
temp = scanner.nextInt();
System.out.println("请输入要中奖学生个数:");
int n = scanner.nextInt();
String[] id = new String[temp];
for (int i = 0; i < id.length; i++) {
id[i] = scanner.next();
}
Types<String> types = new Types<String>();
System.out.println(types.extract(id, n));
}
void readinfile() {
System.out.println("请输入文件名:");
String filename = scanner.next();
String[] f = new String[4];
Scanner cin;
try {
cin = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; cin.hasNext(); i++) {
String s = cin.next();
System.out.println(s);
f[i] = s;
Types<String> types = new Types<String>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}
void readnumber() {
System.out.println("请输入文件名:");
String filename = scanner.next();
Integer[] f = new Integer[4];
Scanner sc;
try {
sc = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; sc.hasNext(); i++) {
Integer t = sc.nextInt();
System.out.println(t);
f[i] = t;
Types<Integer> types = new Types<Integer>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}
public static void main(String[] args) {
UseTypes use = new UseTypes();
use.score();
use.draw();
use.readinfile();
use.readnumber();
}
}
这个一部分题目,这个部分我用的重载,因为使用泛型死活不成功。
package experiment6;
import java.io.*;
import java.util.*;
public class Types<T> {
T[] sorts(T[] temp) {
Arrays.sort(temp);
return temp;
}
String plus(String[] temp) {
String result = new String();
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
double plus(double[] temp) {
double result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
Integer plus(Integer[] temp) {
Integer result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
short plus(short[] temp) {
short result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
byte plus(byte[] temp) {
byte result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
float plus(float[] temp) {
float result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
long plus(long[] temp) {
long result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
List<T> extract(T[] temp,int n) {
Random rand = new Random();
boolean[] bool = new boolean[temp.length];
int t;
List<T> lists = new ArrayList<T>();
for (int i = 0; i < n; i++) {
do
t = rand.nextInt(temp.length);
while (bool[t]);
lists.add(temp[t]);
bool[t] = true;
}
return lists;
}
}
class UseTypes {
Scanner scanner = new Scanner(System.in);
int temp;
void score() {
System.out.println("请输入一组学生成绩,求平均数。");
System.out.print("请输入学生个数:");
temp = scanner.nextInt();
double[] score = new double[temp];
for (int i = 0; i < temp; i++) {
System.out.print("请输入成绩:");
score[i] = scanner.nextDouble();
}
Types<Double> types = new Types<Double>();
System.out.printf("学生平均成绩为: %.1f\n",types.plus(score)/temp);
}
void draw() {
System.out.println("请输入一组学生学号进行抽奖。");
System.out.println("请输入要抽取的学生个数:");
temp = scanner.nextInt();
System.out.println("请输入要中奖学生个数:");
int n = scanner.nextInt();
String[] id = new String[temp];
for (int i = 0; i < id.length; i++) {
id[i] = scanner.next();
}
Types<String> types = new Types<String>();
System.out.println(types.extract(id, n));
}
void readinfile() {
System.out.println("请输入文件名:");
String filename = scanner.next();
String[] f = new String[4];
Scanner cin;
try {
cin = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; cin.hasNext(); i++) {
String s = cin.next();
System.out.println(s);
f[i] = s;
Types<String> types = new Types<String>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}
void readnumber() {
System.out.println("请输入文件名:");
String filename = scanner.next();
Integer[] f = new Integer[4];
Scanner sc;
try {
sc = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; sc.hasNext(); i++) {
Integer t = sc.nextInt();
System.out.println(t);
f[i] = t;
Types<Integer> types = new Types<Integer>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}
public static void main(String[] args) {
UseTypes use = new UseTypes();
use.score();
use.draw();
use.readinfile();
use.readnumber();
}
}
解决方案 »
- 如何在JAVA SE应用程序中嵌入网页?
- 大家帮我看一下,万分感谢。错误提示是: Win 中的 run() 无法实现 java.lang.Runnable 中的 run();被覆盖的方法不抛出 java.io.IOException
- hibernate通过mysql进行两面外连接查询问题
- Struts 的Action方法中如何定义和抛出自定义异常?
- path设置!在线
- 请大家帮我一下,非常头疼的问题!关于JMF的异常!
- 现在与未来,请指路!谢谢!
- 求您了!!哪里有JAVA2图形编程I下载?
- 高分求解:用java怎么扫描端口?一定给分
- 请问那里有编写拖放控制技术的资料,请各位大侠救命,help!!!!!!!
- 想看看java有没有源代码····
- 0.5f==0.5 0.3f==0.3
import java.io.*;
import java.util.*;
public class Types<T> {
T[] sorts(T[] temp) {
Arrays.sort(temp);
return temp;
}
String plus(String[] temp) {
String result = new String();
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
double plus(double[] temp) {
double result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
Integer plus(Integer[] temp) {
Integer result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
short plus(short[] temp) {
short result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
byte plus(byte[] temp) {
byte result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
float plus(float[] temp) {
float result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
long plus(long[] temp) {
long result = 0;
for (int i = 0; i < temp.length; i++) {
result += temp[i];
}
return result;
}
List<T> extract(T[] temp,int n) {
Random rand = new Random();
boolean[] bool = new boolean[temp.length];
int t;
List<T> lists = new ArrayList<T>();
for (int i = 0; i < n; i++) {
do
t = rand.nextInt(temp.length);
while (bool[t]);
lists.add(temp[t]);
bool[t] = true;
}
return lists;
}
}
class UseTypes {
Scanner scanner = new Scanner(System.in);
int temp;
void score() {
System.out.println("请输入一组学生成绩,求平均数。");
System.out.print("请输入学生个数:");
temp = scanner.nextInt();
double[] score = new double[temp];
for (int i = 0; i < temp; i++) {
System.out.print("请输入成绩:");
score[i] = scanner.nextDouble();
}
Types<Double> types = new Types<Double>();
System.out.printf("学生平均成绩为: %.1f\n",types.plus(score)/temp);
}
void draw() {
System.out.println("请输入一组学生学号进行抽奖。");
System.out.println("请输入要抽取的学生个数:");
temp = scanner.nextInt();
System.out.println("请输入要中奖学生个数:");
int n = scanner.nextInt();
String[] id = new String[temp];
for (int i = 0; i < id.length; i++) {
id[i] = scanner.next();
}
Types<String> types = new Types<String>();
System.out.println(types.extract(id, n));
}
void readinfile() {
System.out.println("请输入文件名:");
String filename = scanner.next();
String[] f = new String[4];
Scanner cin;
try {
cin = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; cin.hasNext(); i++) {
String s = cin.next();
System.out.println(s);
f[i] = s;
Types<String> types = new Types<String>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}
void readnumber() {
System.out.println("请输入文件名:");
String filename = scanner.next();
Integer[] f = new Integer[4];
Scanner sc;
try {
sc = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; sc.hasNext(); i++) {
Integer t = sc.nextInt();
System.out.println(t);
f[i] = t;
Types<Integer> types = new Types<Integer>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}
public static void main(String[] args) {
UseTypes use = new UseTypes();
use.score();
use.draw();
use.readinfile();
use.readnumber();
}
}
可以这样改代码
import java.io.*;
import java.util.*;
public class Types<T>
{
public static void main(String[] args) //主方法
{
UseTypes use = new UseTypes();
use.score();
use.draw();
use.readinfile();
use.readnumber();
}
T[] sorts(T[] temp)
{
Arrays.sort(temp);
return temp;
}
String plus(String[] temp)
{
String result = new String();
for (int i = 0; i < temp.length; i++)
{
result += temp[i];
}
return result;
}
double plus(double[] temp)
{
double result = 0;
for (int i = 0; i < temp.length; i++)
{
result += temp[i];
}
return result;
}
Integer plus(Integer[] temp)
{
Integer result = 0;
for (int i = 0; i < temp.length; i++)
{
result += temp[i];
}
return result;
}
short plus(short[] temp)
{
short result = 0;
for (int i = 0; i < temp.length; i++)
{
result += temp[i];
}
return result;
}
byte plus(byte[] temp)
{
byte result = 0;
for (int i = 0; i < temp.length; i++)
{
result += temp[i];
}
return result;
}
float plus(float[] temp)
{
float result = 0;
for (int i = 0; i < temp.length; i++)
{
result += temp[i];
}
return result;
}
long plus(long[] temp)
{
long result = 0;
for (int i = 0; i < temp.length; i++)
{
result += temp[i];
}
return result;
}
List<T> extract(T[] temp,int n)
{
Random rand = new Random();
boolean[] bool = new boolean[temp.length];
int t;
List<T> lists = new ArrayList<T>();
for (int i = 0; i < n; i++)
{
do
t = rand.nextInt(temp.length);
while (bool[t]);
lists.add(temp[t]);
bool[t] = true;
}
return lists;
}
}
class UseTypes {
Scanner scanner = new Scanner(System.in);
int temp;
void score() {
System.out.println("请输入一组学生成绩,求平均数。");
System.out.print("请输入学生个数:");
temp = scanner.nextInt();
double[] score = new double[temp];
for (int i = 0; i < temp; i++) {
System.out.print("请输入成绩:");
score[i] = scanner.nextDouble();
}
Types<Double> types = new Types<Double>();
System.out.printf("学生平均成绩为: %.1f\n",types.plus(score)/temp);
}
void draw() {
System.out.println("请输入一组学生学号进行抽奖。");
System.out.println("请输入要抽取的学生个数:");
temp = scanner.nextInt();
System.out.println("请输入要中奖学生个数:");
int n = scanner.nextInt();
String[] id = new String[temp];
for (int i = 0; i < id.length; i++) {
id[i] = scanner.next();
}
Types<String> types = new Types<String>();
System.out.println(types.extract(id, n));
}
void readinfile() {
System.out.println("请输入文件名:");
String filename = scanner.next();
String[] f = new String[4];
Scanner cin;
try {
cin = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; cin.hasNext(); i++) {
String s = cin.next();
System.out.println(s);
f[i] = s;
Types<String> types = new Types<String>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}
void readnumber() {
System.out.println("请输入文件名:");
String filename = scanner.next();
Integer[] f = new Integer[4];
Scanner sc;
try {
sc = new Scanner(new FileReader(filename));
System.out.println("这是文件中的东西。");
for (int i = 0; sc.hasNext(); i++) {
Integer t = sc.nextInt();
System.out.println(t);
f[i] = t;
Types<Integer> types = new Types<Integer>();
System.out.println("和为:");
System.out.println(types.plus(f));
System.out.println("排序后:");
System.out.println(Arrays.toString(types.sorts(f)));
}
} catch (Exception e){
System.out.println("catch Exception");
System.out.println("getMessage():" + e.getMessage());
}
}}