黑马程序员技术交流社区

标题: java基础,今天想了一个多小时都没想出来, [打印本页]

作者: huangsong1002    时间: 2016-7-24 00:16
标题: java基础,今天想了一个多小时都没想出来,
求指点
(1)键盘录入三个整数,按照从小到大的顺序输出
        (2)如果用户输入的是3 2 1,程序运行后打印格式"按照从小到大排序后的顺序为:1 2 3
作者: huangsong1002    时间: 2016-7-24 00:19
if (x < y & y <= z) {
                                 System.out.println("按照从小到大排序后的顺序为:" + x + y + z);
                        }else if (y < x & x <= z) {
                                 System.out.println("按照从小到大排序后的顺序为:" + y + z + z);
                        }else if (x < z & z <= y) {
                                 System.out.println("按照从小到大排序后的顺序为:" + x + z + y);
                        }else if (z < x & x <= y) {
                                 System.out.println("按照从小到大排序后的顺序为:" + z + x + y);
                        }else if (z < y & y <= x) {
                                 System.out.println("按照从小到大排序后的顺序为:" + z + y + x);
                        }else {
                                 System.out.println("按照从小到大排序后的顺序为:" + y + z + x);
这是我的想法,但运算时问题有点大..不知道为什么
作者: 657324    时间: 2016-7-24 01:51
int max;  //取出最大值
if(x>y){max = x}else{max=y}
if(max>z){     }else{max = z}
同样方法取出最小值及中间值  再打印
作者: itismyhao    时间: 2016-7-24 02:31
  1. import java.util.Scanner;
  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Scanner sc=new Scanner(System.in);
  7.                 System.out.println("输入三个数,请输入第一个数");
  8.                 int num1=sc.nextInt();
  9.                 System.out.println("请输入第二个数");
  10.                 int num2=sc.nextInt();
  11.                 System.out.println("请输入第三个数");
  12.                 int num3=sc.nextInt();
  13.                 int max=(num1>num2?num1:num2)>num3?(num1>num2?num1:num2):num3;
  14.                 int min=(num1<num2?num1:num2)<num3?(num1<num2?num1:num2):num3;
  15.                 int mid=(num1>num2?num1:num2)>num3?num3:(num1>num2?num1:num2);
  16.                 System.out.println("从大到小依次为:"+min+","+mid+","+max);
  17.         }
  18. }
复制代码

作者: itismyhao    时间: 2016-7-24 02:33
huangsong1002 发表于 2016-7-24 00:19
if (x < y & y

先做完逻辑功能之后再打印呀
作者: 自由人3738    时间: 2016-7-24 08:50
好牛的逻辑思维

作者: 自由人3738    时间: 2016-7-24 08:51
其实可以用StringBuffer 来做  现一个一个添加,然后调用反转,接着转换成字符串输出就可以啦
作者: wei451341693    时间: 2016-7-24 09:29
你想的太绕了
作者: wei451341693    时间: 2016-7-24 09:30
class SelectDemo
{
        private int[] arr;
        SelectDemo(int[] arr)
        {
                this.arr = arr;
        }
        public void demo()
        {
                for (int x=0;x<arr.length ;x++ )
                {
                        for (int y=x+1;y<arr.length ; y++)
                        {
                                if (arr[x]>arr[y])
                                {
                                        int temp = arr[x];
                                        arr[x] = arr[y];
                                        arr[y] = temp;
                                }
                        }
                }
        }
        public void select()
        {
                for (int x=0;x<arr.length ;x++ )
                {
                        if(x!=arr.length-1)
                        {
                        System.out.print(arr[x]+",");
                        }
                        else
                        {
                        System.out.println(arr[x]);
                        }
                }
        }
}

class  SelectDemo1
{
        public static void main(String[] args)
        {
                int[] arr = {5,7,16};
                SelectDemo s = new SelectDemo(arr);
                s.demo();
                s.select();
        }
}

作者: 新晋猿工    时间: 2016-7-24 09:54
  1. //这是第一种方法:
  2. package 杂七杂八;

  3. import java.util.Arrays;
  4. import java.util.Scanner;

  5. public class CompareDemo2 {
  6.     public static void main(String[] args) {
  7.         Scanner sc = new Scanner(System.in);
  8.         System.out.println("请输入第一个数:");
  9.         int FirstNum = sc.nextInt();
  10.         System.out.println("请输入第二个数:");
  11.         int SecondNum = sc.nextInt();
  12.         System.out.println("请输入第三个数:");
  13.         int ThirdNum = sc.nextInt();
  14.        
  15.         int arr[] = new int[3];
  16.         arr[0] = FirstNum;
  17.         arr[1] = SecondNum;
  18.         arr[2] = ThirdNum;
  19.         Arrays.sort(arr);
  20.         System.out.println(Arrays.toString(arr));
  21.     }
  22. }
  23. //这是第二种方法:
  24. package 杂七杂八;

  25. import java.util.Scanner;

  26. public class CompareDemo {
  27.     public static void main(String[] args) {
  28.         Scanner sc = new Scanner(System.in);
  29.         System.out.println("请输入第一个数:");
  30.         int FirstNum = sc.nextInt();
  31.         System.out.println("请输入第二个数:");
  32.         int SecondNum = sc.nextInt();
  33.         System.out.println("请输入第三个数:");
  34.         int ThirdNum = sc.nextInt();
  35.         int sum = FirstNum + SecondNum + ThirdNum;
  36.         int MaxNum = Math.max(Math.max(FirstNum, SecondNum), ThirdNum);
  37.         int MinNum = Math.min(Math.min(FirstNum, SecondNum), ThirdNum);
  38.         int MidNum = sum - (MaxNum+MinNum);
  39.         System.out.println("从小到大排序分别是:"+MinNum+","+MidNum+","+MaxNum);
  40.     }
  41. }
复制代码


作者: accomplonely    时间: 2016-7-24 10:47
新晋猿工 发表于 2016-7-24 09:54

直接用for循环。嵌套个for循环,然后就像冒泡排序法一样,把大的值全部排在前面。要不然其他方法 逻辑太混乱了。。话说。。我们安卓基础第三天的作业
作者: accomplonely    时间: 2016-7-24 10:48
/*(1)键盘录入三个整数,按照从小到大的顺序输出
        (2)如果用户输入的是3 2 1,程序运行后打印格式"按照从小到大排序后的顺序为:1 2 3"*/

import java.util.Scanner;                //导入Scanner包
class Number_Demo {                       //声明一个类
        public static void main(String[] args) { //定义主方法
                Scanner sc=new Scanner(System.in);  //创建Scanner对象
                System.out.println("请输入第一个数据");
                int a=sc.nextInt();  //利用对象方法接受键盘输入的数据赋值给a
                System.out.println("请输入第二个数据");
                int b=sc.nextInt();  //利用对象方法接受键盘输入的数据赋值给b
        System.out.println("请输入第三个数据");
                int c=sc.nextInt();  //利用对象方法接受键盘输入的数据赋值给c
                int[] mu={a,b,c};
                int temp;  //定义一个中间变量
                for(int i=0;i<3;i++){  //利用双重循环,按照升序进行排序,使用冒泡法,依次把大的数据换到前面
                   for(int j=1;j<3;j++){
                      if(mu[j]<mu[j-1]){
                            temp=mu[j-1];
                                mu[j-1]=mu[j];
                                mu[j]=temp;
                          }
                   }
                }
                System.out.print("按照升序排列为:");
for(int i=0;i<3;i++){                     //利用循环,输出数组。
System.out.print(mu[i]+",");

}
               
        }
}

作者: 额额    时间: 2016-7-24 12:39
public class JiHe_03_03 {
        public static void main(String[] args) {
                System.out.println("请输入数字");
                Scanner sc=new Scanner(System.in);
                ArrayList<Integer> list=new ArrayList<>();
                for (int i = 0; i < 5; i++) {
                        list.add(sc.nextInt());
                }
                Collections.sort(list);        //小到大的顺序
                System.out.println(list);
        }
}
作者: 无聊此刻    时间: 2016-7-24 12:51
import java.util.Scanner; class Demo1 {         public static void main(String[] args)          {                 Scanner sc=new Scanner(System.in);                 System.out.println("输入三个数,请输入第一个数");                 int a =sc.nextInt();                 System.out.println("请输入第二个数");                 int b =sc.nextInt();                 System.out.println("请输入第三个数");                 int c =sc.nextInt();                 if (a > b && b > c) {                                         System.out.println("从大到小依次为:"+ c +","+ b +","+ a);                 }else if (a > c && c > b ) {                                         System.out.println("从大到小依次为:"+ b +","+ c +","+ a);                  }else if (b > c && c > a) {                                         System.out.println("从大到小依次为:"+ a +","+ c +","+ b);                 }else if (b > a && a > c) {                                         System.out.println("从大到小依次为:"+ c +","+ a +","+ b);                 }else if (c > a && a > b) {                                         System.out.println("从大到小依次为:"+ b +","+ a +","+ c);                 }else if (c > b && b > a) {                                         System.out.println("从大到小依次为:"+ a +","+ b +","+ c);                 }                         } }
作者: 无聊此刻    时间: 2016-7-24 12:52
...第一次回复...格式怎么变成这个样子了..这个是最简单的方法...高深的上面的大神都回复了..
作者: ylca    时间: 2016-7-24 12:56
弄个数组排序一下再输出不行吗?
作者: rockphoenix    时间: 2016-7-24 17:53
怎么这么多人问这个呢。。。
以下纯手打,版主看到给几分技术分啊谢谢...
import java.util.Arrays;
import java.util.Scanner;

public class Test {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);                                //创建键盘录入对象
                System.out.println("请输入三个整数");                                
                int [] arr = new int [3];                                                        //创建长度为3int型数组存储键盘录入对象
               
                //for循环键盘录入数字将数组填满
                for (int i = 0; i < 3; i++) {
                        arr = sc.nextInt();
                }
                Arrays.sort(arr);                                                                        //数组排序
               
                //for循环遍历数组并输出
                for (int i : arr) {
                        System.out.println(i);
                }
        }

}
上面代码的思想是创建数组并利用循环键盘录入数据将数组填满,调用Arrays.sort()方法进行排序,如果觉得难接受下面附上冒泡排序和快速排序代码

public static void BubbleSort(int [] arr) {//冒泡排序
                int a = 0;
                for (int i = 0; i < arr.length - 1; i++) {
                        for (int j = 0; j < arr.length - 1 - i; j++) {
                                if (arr[j] > arr[j+1]) {
                                        a = arr[j];
                                        arr[j] = arr[j+1];
                                        arr[j+1] = a;
                                }
                        }
                }
举个例子:数组长度为6,用5次排序完成,这也是为什么第一层循环里i < arr.length -1
就是每一次相邻两个比大小,大的滚到后面去~
第一次                                第二次                               第三次                                第四次                              第五次
90 80 70 60 50 40             80 70 60 50 40 90            70 60 50 40 80 90              60 50 40 70 80 90           50 40 60 70 80 90
80 90 70 60 50 40             70 80 60 50 40 90            60 70 50 40 80 90              50 60 40 70 80 90           40 50 60 70 80 90
80 70 90 60 50 40             70 60 80 50 40 90            60 50 70 40 80 90              50 40 60 70 80 90
80 70 60 90 50 40             70 60 50 80 40 90            60 50 40 70 80 90
80 70 60 50 90 40             70 60 50 40 80 90
80 70 60 50 40 90            
        ---------------------------------------------------------------我是分割线------------------------------------------------------------------
        public static void SelectSort(int [] arr){//选择排序
                int a =0;
                for (int i = 0; i < arr.length - 1; i++) {
                        for (int j = i + 1; j < arr.length; j++) {                               
                                if (arr[i] > arr[j]) {
                                a = arr[i];
                                arr[i] = arr[j];
                                arr[j] = a;                                       
                                }
                        }
                }
同样一个例子,选择排序是第一个先和第二个比,小的滚前面,然后还是第一个依次和后面比

第一次                               第二次                             第三次                            第四次                              第五次
90 80 70 60 50 40            40 90 80 70 60 50          40 50 90 80 70 60          40 50 60 90 80 70           40 50 60 70 90 80
80 90 70 60 50 40            40 80 90 70 60 50          40 50 80 90 70 60          40 50 60 80 90 70           40 50 60 70 80 90
70 90 80 60 50 40            40 70 90 80 60 50          40 50 70 90 80 60          40 50 60 70 90 80
60 90 80 70 50 40            40 60 90 80 70 50          40 50 60 90 80 70
50 90 80 70 60 40            40 50 90 80 70 60
40 90 80 70 60 50

作者: huangsong1002    时间: 2016-7-24 21:36
想了一晚上的结果,终于有答案了
import java.util.Scanner;
                class  Test10 {
                        public static void main(String[] args) {
                                Scanner sc = new Scanner (System.in);
                                System.out.println("请输入第一个整数");
                        int x = sc.nextInt();
                                System.out.println("请输入第二个整数");
                        int y = sc.nextInt();
                                System.out.println("请输入第三个整数");
                        int z = sc.nextInt();
                        int a = (((x > y) ? y : x) > z) ? z : ((x > y) ? y : x);
                        int c = (((x > y) ? x : y) > z) ?  ((x > y) ? x : y) : z;
                        int b = x ^ y ^ z ^ a ^ c;
                        System.out.println("按照从小到大排序后的顺序为:" + a + b + c);
                }
        }

作者: 大天    时间: 2016-7-24 22:27

多看书
作者: zby15217172590    时间: 2016-7-25 23:58
混分的好时机
作者: walkk    时间: 2016-7-26 00:03
日常回复
作者: M_J    时间: 2016-7-26 00:46
本帖最后由 M_J 于 2016-7-26 00:52 编辑

[Java] 纯文本查看 复制代码
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
//输入三个整数x,y,z,请把这三个数由小到大输出。
public class Ti15_paixu {
        public static void main(String[] args) {
                List<Integer> list1 = new ArrayList<Integer>();
                List<Integer> list2 = new ArrayList<Integer>();
                Scanner sc = new Scanner(System.in);
                for(int i=0;i<3;i++){
                        System.out.println("请输入第"+(i+1)+"个整数:");
                        list1.add(sc.nextInt());
                }
                while(list1.size()>0){
                        int n = list1.get(0);
                        for(int j=0;j<list1.size();j++){
                                if(list1.get(0)>=list1.get(j)){
                                        n = list1.get(j);
                                }
                        }
                        list2.add(n);
                        list1.remove((Integer)n);
                }
                System.out.print("从小到大是:");
                for (Integer integer : list2) {
                        System.out.print(integer+" ");
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2