Вопрос по возрастанию цифр.

 
 
 
Сообщения:28
Вопрос: Подскажите пожалуйста, как вывести три введенные цифры по возрастанию. Тоесть input three numbers and the program should then output the numbers in ascending order.
У меня получается только с двумя цифрами а с тремя не все рабоает. Спасибо.

import java.util.*;
public class ascending
{
	static Scanner console = new Scanner (System.in);
	public static void main (String []args)
{

		int x, y, z;

		System.out.println("Enter three integer: ");
		x = console.nextInt();
		y = console.nextInt();
		z = console.nextInt();

		if 
		( x > y) 
			if
			(x > z) 
				if
				(y > z)
      
System.out.println("Ascending your number: " + z + " " + y + " " + x);
System.out.println();
if 
(y > x) 
	if
	(y > z) 
		if
		(x > z)

System.out.println("Ascending your number: "  + y + " " + x + " " + z);
System.out.println();
        
        if 
        (z > x) 
        	if
        	(z > y) 
        		if
        		(y > x)
System.out.println("Ascending your number: "  + x + " " + y + " " + z);
System.out.println();
		}
	}
 
 
Сообщения:318
А массивами пользоваться можно? Если да, то запихните числа в массив и отсортируйте.
 
 
Сообщения:318
Если нет, то для трех чисел есть простенький алгоритм. Сейчас накидаю.
 
 
Сообщения:140
Если для решения задачи можно использовать массивы, то самый оптимальный для Вас вариант - сортировка пузырьком.
import java.util.*;

public class Main{
	static Scanner console = new Scanner (System.in);
	public static void main(String[] args){
		int array[] = new int[3];
		System.out.println("Enter three integer: ");
		
		for(int i = 0; i<array.length; i++){
			array[i] = console.nextInt();
		}
		for(int i = array.length-1 ; i >= 0 ; i--){
			for(int j = 0 ; j < i ; j++){
				if( array[j] > array[j+1] ){
					int t = array[i];
					array[i] = array[j];
					array[j] = t;
				}
			}
		}
		for(int i = 0; i<array.length; i++)
			System.out.print(array[i] + " ");
		
	}
}

Если пользоваться массивами нельзя, то, как вариант:
import java.util.*;

public class Main{
	static Scanner console = new Scanner (System.in);
	public static void main(String[] args){
		System.out.println("Enter three integer: ");
		int x, y, z;
		x = console.nextInt();
		y = console.nextInt();
		z = console.nextInt();
		
		int min = Math.min(Math.min(x, y), z);
		int max = Math.max(Math.max(x, y), z);
		int middle = 0;
		
		if(x != min && x != max) middle = x;
		if(y != min && y != max) middle = y;
		if(z != min && z != max) middle = z;
		
		System.out.println(min + " " + middle + " " + max);
		
	}
}
Изменен:13 фев 2011 22:28
 
 
Сообщения:318
По-любому можно обойтись меньшим количеством сравнений, но это так на скорую руку лобовой вариант.
import java.util.Scanner;

public class Sorter {

    public void printByAscending(int x, int y, int z) {
	  int min = 0;
	  int med = 0;
	  int max = 0;
	  if (x > y && x > z) {
	      max = x;
	      if (y > z) {
		  med = y;
		  min = z;
	    } else {
		 med = z;
		 min = y;
	    }
	} else if (y > x && y > z) {
	      max = y;
	    if (x > z) {
		  med = x;
		  min = z;
	     } else {
		  med = z;
		  min = x;
	    }
	} else if (z > x && z > y) {
	    max = z;
	    if (x > y) {
		   med = x;
		   min = y;
	     } else {
		   med = y;
		   min = x;
	     }
	  }
	  System.out.println("minimum= "+min);
	  System.out.println("medium= "+med);
	  System.out.println("maximum= "+max);
    }

    public static void main(String[] args) {
	  Scanner scanner = new Scanner(System.in);
	  Sorter sorter = new Sorter();
	  System.out.print("Input first number>");
	  int x = scanner.nextInt();
	  System.out.print("Input second number>");
	  int y = scanner.nextInt();
	  System.out.print("Input third number>");
	  int z = scanner.nextInt();
	  sorter.printByAscending(x, y, z);
    }

}

А вообще, проще все-таки сортировкой массива.
 
 
Сообщения:28
Спасибо огромное. Конечно массивы использовать легче и удобнее, но к сожалению мы их не проходили. Теперь буду знать и второй вариант я имею в виду массивы. Огромное спасибо всем. :)
 
 
Сообщения:318
Eps, считерил с Math.min(), Math.max():)
Я что-то даже и не вспомнил о них.
Я тогда, пожалуй, топикстартеру еще "ленивую" сортировку покажу:
import java.util.Arrays;
import java.util.Scanner;

public class Sorter {

     public void printByAscending(int x,int y,int z){
	   int[] array={x,y,z};
	   Arrays.sort(array);
	   System.out.println(Arrays.toString(array));
    }
    public static void main(String[] args) {
	   Scanner scanner = new Scanner(System.in);
	   Sorter sorter = new Sorter();
	   System.out.print("Input first number>");
	   int x = scanner.nextInt();
	   System.out.print("Input second number>");
	   int y = scanner.nextInt();
	   System.out.print("Input third number>");
	   int z = scanner.nextInt();
	   sorter.printByAscending(x, y, z);
    }

}
 
 
Сообщения:284
Как вариант - использование TreeSet.
 
 
Сообщения:10
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ww;
 import java.util.Scanner;
/**
 *
 * @author tux
 */
public class Ww {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       Scanner in = new Scanner(System.in);

        System.out.print("ведите первое число>");
        int a = in.nextInt();
        System.out.print("ведите второе число>");
        int b = in.nextInt();
        System.out.print("ведите третье число>");
        int c = in.nextInt();
        
        if (a < b && a < c)
        {
             System.out.println(a + " " + b + " " + c);
        }
        else if (a < b && c < b)
        {
            System.out.println(a + " " + c + " " + b);
        }
        else if (b < a && a < c)
        {
             System.out.println(b + " " + a + " " + c);
        }
        else if (b < c && b < a)
        {
             System.out.println(b + " " + c + " " + a);
        }
        else if (c < a && a > b)
        {
             System.out.println(c + " " + a + " " + b);
        }
        else if (c < a && c < b)
        {
             System.out.println(c + " " + b + " " + a);
        }
    }
}
    

 
 
Сообщения:2
Этот код для значений c = 3; b = 7; a =5 работать будет не правильно, результат будет таким 5 3 7, так как сработает условие (a < b && c < b), вместо (c < a && c < b),
это то что сразу бросилось в глаза. Думаю что данный вариант совсем не рабочий :)
Вот еще вариант для значений a = 3; b = 8; c = 5. В итоге результат будет по первому условию if (a < b && a < c) то есть 3 8 5.


Tux:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ww;
 import java.util.Scanner;
/**
 *
 * @author tux
 */
public class Ww {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
       Scanner in = new Scanner(System.in);

        System.out.print("ведите первое число>");
        int a = in.nextInt();
        System.out.print("ведите второе число>");
        int b = in.nextInt();
        System.out.print("ведите третье число>");
        int c = in.nextInt();
        
        if (a < b && a < c)
        {
             System.out.println(a + " " + b + " " + c);
        }
        else if (a < b && c < b)
        {
            System.out.println(a + " " + c + " " + b);
        }
        else if (b < a && a < c)
        {
             System.out.println(b + " " + a + " " + c);
        }
        else if (b < c && b < a)
        {
             System.out.println(b + " " + c + " " + a);
        }
        else if (c < a && a > b)
        {
             System.out.println(c + " " + a + " " + b);
        }
        else if (c < a && c < b)
        {
             System.out.println(c + " " + b + " " + a);
        }
    }
}
    

Изменен:11 янв 2018 16:03
 
 
Сообщения:2
Рабочий вариант, для условия убывания:
import java.io.*;
public class SortIf {
    public static void main(String[] args) throws Exception {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(r.readLine());
        int b = Integer.parseInt(r.readLine());
        int c = Integer.parseInt(r.readLine());
        if (a >= b && b >= c){
            System.out.println(a + " " + b + " " + c );
        }else if (a >= c && c >= b){
            System.out.println(a + " " + c + " " + b);
        } else if (b >= a && a >= c){
            System.out.println(b + " " + a + " " + c);
        } else if (b >= c && c >= a){
            System.out.println(b + " " + c + " " + a);
        }else if (c >= a && b >= a){
            System.out.println(c+ " " + b + " " + a);
        } else if (c >= b && a >= b){
            System.out.println(c+ " " + a + " " + b);
        }
    }

}
Изменен:12 янв 2018 08:25
 
Модераторы:alon4iknazicaTaky_
Сейчас эту тему просматривают:Нет