编写一个java程序,任意输入三个数,能按大小排列出

编写一个java程序,任意输入三个数,能按大小排列出,第1张

什么数?整数 还是浮点数?数的大小长度有没有限制?

下面的代码供参考

import javamathBigDecimal;

import javautilArrayList;

import javautilList;

import javautilScanner;

import orgapachecommonslangStringUtils;

/

<p>

单纯测试方法

<p>

desc:

@version 10

/

public class CleanTest {

public static void main(String[] args) {

// 要输入的数字个数,本例中可改为3

int numCount = 5;

// 使用bigdecimal,性能会有一定损失,可以接收较大范围,可接收整形与浮点数同时输入排序

List<BigDecimal> listBigDecimal = new ArrayList<BigDecimal>();

Systemoutprintln("本程序将对输入的" + numCount + "个数进行排序并输出");

Scanner scanIn = new Scanner(Systemin);

String lineStr = "";

while (listBigDecimalsize() < numCount) {

Systemoutprintln("请输入第" + (listBigDecimalsize() + 1) + "个数:");

lineStr = scanInnext();

if (StringUtilsisNotEmpty(lineStr)) {

try {

insertSort(listBigDecimal, new BigDecimal(lineStr));

} catch (Exception e) {

Systemoutprintln("数字格式不正确,请重新输入");

}

}

}

Systemoutprintln(listBigDecimal);

}

/

插入排序

@param listBig

@param insertVal

/

static void insertSort(List<BigDecimal> listBig, BigDecimal insertVal) {

if (null != listBig) {

for (int i = 0; i < listBigsize(); i++) {

if (insertValcompareTo(listBigget(i)) >= 0) {

listBigadd(i, insertVal);

return;

}

}

listBigadd(insertVal);

}

}

}

因为在if后面的括号是if的,for后面是for的在给你一个这道题的函数版做法

#include <stdioh>

int bigmax(int a, int b) 最大值

{

if (a>b)

return a;

else

return b;

}

int littlemax (int a,int b)最小值

{

if (a>b)

return b;

else

return a;

}

int main ()

{

int a,b,c,d;

scanf ("%d%d%d",&a,&b,&c);

printf ("%d", littlemax(littlemax(a,b),c));

printf (" ");

printf ("%d",a+b+c- littlemax(littlemax(a,b),c)-bigmax(bigmax(a,b),c));

printf (" ");

printf ("%d",bigmax(bigmax(a,b),c));

printf (" ");

return 0;

}

希望我的代码能帮到你

楼上说的申明 其实不用的 只要你的子函数 在主函数之前就行了 我对你的错误进行了修改,并且稍加注释 你可以看看 不懂的可以追问 希望可以采纳 谢谢 另外 鉴于你的数组 定为了10 所以我改成了 排序十个数 再就是你的n要是要 自己输入 请自己写个scanf ,a[10]中10太小了,怎么任意呢?

#include<stdioh>

void myfun(int a[10], int n)

{

int i=0, t=0;

int k,end;//end 不赋值?

end=10;//end 也可以用n代替

//k=0; //这个其实没必要

for(k=0; k<n-1; k++)

{

//k=0;//k 你从来都不变

for(i=k+1; i<end; i++)//在i循环里面还用i 。永远都循环不完了 看你的思想应该是选择排序 每次选最小的 我给你改改

//i不需要从0开始 因为每次都选了最小的后来就不用比较了

{

if(a[k]>a[i])//你这里k等于多少?

{//你这里没有加括号 那么除了 t=a[i];其余的每次都会执行 你说会不会死翘翘

// k=i;//这个i是有歧义的

t=a[i];//你这里的交换我倒是看懂了

a[i]=a[k];

a[k]=t;

}

}

}

}

main()

{

int i=0;int a[10],n;

n=10;//1

for(i=0;i<n;i++)

scanf("%d",&a[i]);//2

for(i=0;i<n;i++)

printf("%d ",a[i]);//数字之后加个空格隔开

putchar('\n');//换行

myfun(a,n);//你到底是排 n个数 还是6个数 我把 6 改为n了

for(i=0;i<n;i++)

printf("%d ",a[i]);

putchar('\n');

}

版本 2

程序集 窗口程序集1

程序集变量 分割的数字, 整数型, , "0"

子程序 整数排列

参数 大小排列, 逻辑型

局部变量 计次, 整数型

清除数组 (分割的数字)  ' 先把数组归零以清除上次的数据

计次循环首 (取文本长度 (编辑框1内容), 计次)

  加入成员 (分割的数字, 到数值 (取文本中间 (编辑框1内容, 计次, 1)))  ' 把文本数字分割并存入数组

计次循环尾 ()

编辑框1内容 = “”

判断开始 (大小排列 = 真)

  数组排序 (分割的数字, 假)  ' 排序

默认

  数组排序 (分割的数字, )

判断结束

计次循环首 (取数组成员数 (分割的数字), 计次)

  编辑框1内容 = 编辑框1内容 + 到文本 (分割的数字 [计次])  ' 显示

计次循环尾 ()

子程序 _从大到小_被单击

整数排列 (真)

子程序 _从小到大_被单击

整数排列 (假)

其实从思想上来说,就是一个排序的思路问题。

排序的方法有很多。

说2个最简单的(设让结果从小到大排列)

方法一

假设10个数

把第一个依次与他后面的比较,如果比后面的大,就把位子换下,这样当第一个看完后面9个数后第一个数就变成最小的数了

再把第二个依次与后面8个比较,让第二个变成9个中最小的

以此类推,每次都拿还没比出顺序的第一个数和它后面的每个数比较

这样当第九个数拿出来和第十个数比完后,整个数列就变成从小到大排列的了

方法二(叫做冒泡)

依次拿第一个数和第二个比,第二个和第三个比,凡是前面的数比后面的数大的话就换位子,当第九个和第十个比完后,第十个位子永远是最大的数。然后再对前9个数再做一次这个事情,那第九个数就变9个里最大的了,直到最后一次第一个数和第二个数比完(此时后面8个数已经按序排列了)后,整个数列就变成了从小到大排列了

以上就是关于编写一个java程序,任意输入三个数,能按大小排列出全部的内容,包括:编写一个java程序,任意输入三个数,能按大小排列出、C语言程序:从小到大排列数、求任意数组的数大小排列,C语言程序我的错了运行不了。。大师看看、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9485437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存