实验要求
写一个java程序,要求数据从大到小输出,用命令行实现输入数据
实验代码
/**
* Created by zhaohui on 2017/6/16.
*/
public class paixu {
public static void main(String[] args) {
int length=args.length;
int[] arr = new int [length];
int i=0;
for( i=0; i<length;i++)
{
arr[i]=Integer.parseInt(args[i], 10);
}
for(int x=0;x<i;x++)
{
for(int y=x+1;y<i;y++)
{
if(arr[y]>arr[x])
{
int temp=arr[y];
arr[y]=arr[x];
arr[x]=temp;
}
}
}
for(int z=0;z<length;z++)
System.out.println(arr[z]);
}
}
代码分析
将命令行接收的数据进行排序,把srgs数组的数据转换为整形数据存放在arr数组中,采用冒泡法进行排序,最后将整个数组输出。
- 这么做可以减少内存空间的浪费,合理利用内存
int length=args.length;
int[] arr = new int [length];
- 因为输入的数据可能有字符型的,强制转换为整形容易进行比较
for( i=0; i<length;i++)
{
arr[i]=Integer.parseInt(args[i], 10);
}
- 采用冒泡法进行排序
for(int x=0;x<i;x++)
{
for(int y=x+1;y<i;y++)
{
if(arr[y]>arr[x])
{
int temp=arr[y];
arr[y]=arr[x];
arr[x]=temp;
}
}
}
出现错误:
提示错误,发现是println方法使用错误,改正后结果如下:
问题及解决
提示出现这个错误,error:(17,31)java.ioprintStream.pringtln()不适用(实际参数列表和形式参数列表,是因为参数传的多了,函数只接受一个参数,而我传了三个参数。print()和println()都是将其中参数转换成字符串之后,再写入到输入流。而我传入的直接是int数据。print()和println()都是将其中参数转换成字符串之后,再写入到输入流。后来我就换了代码形式,以数组的形式完成实验。刚开始没有意识到这个问题,以至于不知道该怎么解决,看来学习还是要深深扎入到知识中去,出现什么样的情况会有怎样的解决方法都要通过时间获得。
拓展知识
void println()
// 将“float数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(float f)
// 将“int数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(int i)
// 将“long数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(long l)
// 将“对象o对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(Object o)
// 将“字符数组chars对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(char[] chars)
// 将“字符串str+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
synchronized void println(String str)
// 将“字符c对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(char c)
// 将“double数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(double d)
// 将“boolean数据对应的字符串+换行符”写入到“PrintStream输出流”中,println实际调用的是write函数
void println(boolean b)
// 将数据oneByte写入到“PrintStream输出流”中。oneByte虽然是int类型,但实际只会写入一个字节