输入一个正整数n,输出n中的最大数字和最小数字!!!!

输入
12058
96373
输出
max=8 min=0
max=9 min=3
import java.util.*;
public class exp1501 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n,num,max,min;
n=in.nextInt();

/*…源代码…*/

System.out.println("max="+max+" min="+min);
}
}

第1个回答  2012-05-30
循环比较输入的字符串,一个字符一个字符的循环,初始化时,将max,min都初始化成第一个字符中的数值,循环时,如[i]比max 大,则将max 重新赋值,如比min小,则将min重新赋值,循环完后,输出max,min即可。追问

请帮我改下:
import java.util.*;
public class exp1501 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n,num,max,min;
n=in.nextInt();
max=0;
min=9;
num=n;
while(n>0){
num=n%10;
if(maxnum)min=num;
n=n/10;
}

System.out.println("max="+max+" min="+min);
}
}

第2个回答  2012-05-30
首先将输入的int 数字,转为String类型,然后采用String的方法split分为单个字符,将其转为数字后存到数组a中,然后利用数组的排序方法sort,取得最小值和最大值。
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n,num,max = 0,min = 0;
n = in.nextInt();
Integer n1 = Integer.valueOf(n);//in.nextInt();
String s = n1.toString();
String s1[] = s.split("|");
Integer[] a = new Integer[s1.length - 1];
System.out.println(s1.length);
for(int i = 1; i < s1.length; i ++){
a[i - 1] = Integer.valueOf(s1[i]);
}
Arrays.sort(a);
max = a[a.length - 1];
min = a[0];

/*…源代码…*/

System.out.println("max="+max+" min="+min);
}追问

我想问下,就是在运行的时候可以一下输入两个数吗?我遇到的问题是在运行的时候只能一个数一个数地运行。。。。

追答

//可以输入多个数字,只要以空格分开即可,如输入1234 2035两个数
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n,num,max = 0,min = 0;
String s = null;
while((s = in.next())!= null){
String s1[] = s.split("|");
Integer[] a = new Integer[s1.length - 1];
for(int i = 1; i < s1.length; i ++){
a[i - 1] = Integer.valueOf(s1[i]);
}
Arrays.sort(a);
max = a[a.length - 1];
min = a[0];

/*…源代码…*/

System.out.println("max="+max+" min="+min);
}
}

追问

这样也可以吗?
import java.util.*;
public class exp1501 {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n,num,max,min;
n=in.nextInt();
max=0;
min=9;
num=n;
while(n>0){
num=n%10;
if(maxnum)min=num;
n=n/10;
}
System.out.println("max="+max+" min="+min);
}
}

追答

这样就可以了,记得数字间以空格分开
import java.util.*;

public class exp1501 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n, num, max, min;
// n = in.nextInt();
String s = null;
while ((s = in.next()) != null) {
n = Integer.valueOf(s);
max = 0;
min = 9;
num = n;
while (n > 0) {
num = n % 10;
if (max num)
min = num;
n = n / 10;
}
System.out.println("max=" + max + " min=" + min);
}
}
}

第3个回答  2012-05-30
package script;

import java.util.*;

public class exp1501 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n, num, max = 0, min = 0;
n = in.nextInt();
final int DIGIT = 10;
int[] number = new int[DIGIT];// 10位够吧。。。不够再加
Arrays.fill(number, -1);// 所有的值填为-1,因为填0的话如果你输入的值不含0,最小值也会是0
int i = 1;
//把输入的数字生成数组
while (n != 0) {
num = n % 10;
number[i - 1] = num;
n /= 10;
i++;
}
Arrays.sort(number);//排序,由小到大
//遍历, 如果不是-1,那么就是最小值
for (int temp : number)
if(temp!=-1){
min=temp;
break;
}
max = number[DIGIT - 1];//最后一个就是最大值
System.out.println("max=" + max + " min=" + min);
}
}追问

我之前的那个在eclipse中运行时可以的,但是我想知道的是,怎样才能输入两个数,但是不用repeat循环呢?还是这个题目就是需要两遍运行呢?因为他的题目当中是有两个输入,但是我运行的时候只能运行一个数字?
谢谢~~~~

追答

输入一个正整数n,为什么要有2个输入啊?
如果你想输入2个数,可以这样
21,30//用逗号隔开
String input=in.next();
String[] temp=input.split(",");
int number1=temp[0]-'0';
int number2=temo[1]-'0';

第4个回答  2012-06-01
String sInt = String.valueOf(Math.abs(n));
num = Integer.valueOf(sInt.charAt(0) + "");
max = min = num;
for (int i = 1; i < sInt.length(); i++) {
num = Integer.valueOf(sInt.charAt(i) + "");
if (min > num) {
min = num;
} else if (max < num) {
max = num;
}
}

//方式二:
num = Math.abs(n);
max = min = num % 10;
while ((num = num / 10) > 0) {
int itmp = num % 10;
if (min > itmp) {
min = itmp;
} else if (max < itmp) {
max = itmp;
}
}
相似回答