前言:做编程题遇到的问题,对思路有较好启示
目录
输入的值较少
当输入的值较少时,我们直接定义几个变量即可。
题目:编写程序,要求用户从键盘输入4个整数,找出其中的最大值和最小值并打印输出。要求使用尽可能少的if(或if-else)语句实现。提示:4条if语句就够了。
分析题目:用户输入整数,输出最大值最小值,if尽量简单。
关键:运用三目运算符,先将三个值进行比较,将三目运算看作整体。
代码:
import java.util.Scanner;//引入Scanner
public class MaxAndMin {
public static void main(String[] args) {
//用户输入
Scanner input = new Scanner(System.in);
int a = input.nextInt();
int b = input.nextInt();
int c = input.nextInt();
int d = input.nextInt();
//声明max,min
int max,min;
//比较大小
//先将三个值进行比较
if((a>b?a:b)>c) { //a、b中较大值 > c
max = (a>b?a:b)>d?(a>b?a:b):d; //a、b中较大值与d比较
}
else //c > a和b
max = c>d?c:d; //c与d比较
//最小值同理
if((a<b?a:b)<c) {
min = (a<b?a:b)<d?(a<b?a:b):d;
}
else
min = c<d?c:d;
System.out.println("max="+max+'\n'+"min="+min);
input.close(); //释放input内存
}
}
输入的值较多
当输入的值较多时,我们就需要用数组的方法。
方法一(循环)
import java.util.Scanner;//引入Scanner让用户输入
public class ArraysSort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("your need input nuber:");
int x = sc.nextInt(); //x:用户要输入的个数
int arr[ ] = new int[x]; //为数组创建空间
for(int i = 0 ; i < x ; i++) {
arr[i] = sc.nextInt();
}
int max = arr[0]; //这里假设最大的是第一个元素
for(int j = 0 ; j < x ; j++) {
if(arr[j]>max)
max = arr[j];
}
int min = arr[0]; //这里假设最小的是第一个元素
for(int j =0 ; j < x ; j++){
if(arr[j]<min)
min = arr[j];
}
System.out.println("max = "+max); //最大值
System.out.println("min = "+min); //最小值
sc.close(); //释放sc的内存
}
}
方法二(Arrays.sort排序)(值较少时也可以用)
import java.util.Arrays;//引入Arrays对数组排序
import java.util.Scanner;//引入Scanner让用户输入
public class ArraysSort {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("your need input nuber:");
int x = sc.nextInt(); //x:用户要输入的个数
int arr[ ] = new int[x]; //为数组创建空间
for(int i = 0 ; i < x ; i++) {
arr[i] = sc.nextInt(); //输入x个整数,将其放到数组中
}
Arrays.sort(arr); //将原来的数组从小到大排序
System.out.println("max = "+arr[x-1]); //最大值
System.out.println("min = "+arr[0]); //最小值
sc.close(); //释放sc的内存
}
}