方法一代码:
package test;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ResearchMaxnum {
//冒泡法
public ResearchMaxnum(double a[],int r){
double t;//用来临时存储的中间变量
for(int i=0;i<9;i++)//循环9轮
for(int k=1;k<=9-i;k++){//一轮比较相邻的(9-i)对数
if(a[k-1]<a[k]){//从左到右如果左边的数小于右边的
t=a[k-1];//先把左边的赋值给中间变量
a[k-1]=a[k];//右边的赋值给左边的
a[k]=t;//前面左边的值又赋值给右边
}
}
System.out.print("排序后的数组:");
for(int j=0;j<=9;j++)//循环输出排序后的数组
{
System.out.print(a[j]);
System.out.print(" ");
}
System.out.println("\n第'"+r+"'个最大的数是:'"+a[r-1]+"'");
}
/*//验证输入的是合法测试数据
public static void A7(String num){
String regex="^[0-9]+(.[0-9]{2})?$";
Pattern p=Pattern.compile(regex);
Matcher t=p.matcher(num);
if(!t.matches()){
System.out.println("你的输入数据不合法请再次输入!");
Input1();
}
}
//只能输入1位的数字:
public static void A0(String num){//对输入的数k进行检验是否输入有误
String regex="^/d{1}$";
Pattern p=Pattern.compile(regex);
Matcher t=p.matcher(num);
if(!t.matches()){
System.out.println("你的输入不合法请再次输入!");
Input2();
}
}*/
public static Scanner Input(){
Scanner sc=new Scanner(System.in);
return sc;
}
public static int Input2(){
int k;
Scanner sc=Input();
System.out.println("请输入你需要查找的第几个最大值:");
k=sc.nextInt();
//A0(String.valueOf(k));
return k;
}
public static double[] Input1(){
double a[]=new double[10];//存放测试数据
Scanner sc=Input();
int i=0;
System.out.println("请输入10个数字经行测试");
while(i<10){
a[i]=sc.nextDouble();
//A7(String.valueOf(a[i++]));
}
return a;
}
public static void main(String[] args) {
double a[]=ResearchMaxnum.Input1();
int k=ResearchMaxnum.Input2();
new ResearchMaxnum(a,k);
}
}
方法二代码:
package test;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ResearchMaxnum {
//冒泡法
public static double[] Maopao(double b[],int r){
double t;//用来临时存储的中间变量
//把放入数组中的数进行逆序排列
for(int i=0;i<r-1;i++)//循环r-1轮
for(int k=1;k<=r-1-i;k++){//一轮比较相邻的(4-i)对数
if(b[k-1]<b[k]){//从左到右如果左边的数小于右边的
t=b[k-1];//先把左边的赋值给中间变量
b[k-1]=b[k];//右边的赋值给左边的
b[k]=t;//前面左边的值又赋值给右边
}
}
for(int i=0;i<r;i++)
{
System.out.print(b[i]);
System.out.print("\n");
}
return b;
}
public ResearchMaxnum(double a[],int r){
double[] b=new double[10];//存放始终逆序排列好的数据
for(int i1=0;i1<r;i1++)//先把前五个数放入数组b
b[i1]=a[i1];
b=Maopao(b,r);//返回逆序排列好的数组b
for(int i=r;i<=9;i++){
if(b[r-1]<a[i]){
b[r-1]=a[i];
b=Maopao(b,r);//返回逆序排列好的数组b
}
}
System.out.print("排序后的数组:");
for(int j=0;j<=r-1;j++)//循环输出排序后的数组
{
System.out.print(b[j]);
System.out.print(" ");
}
System.out.println("\n第'"+r+"'个最大的数是:'"+b[r-1]+"'");
}
/*//验证输入的是合法测试数据
public static void A7(String num){
String regex="^[0-9]+(.[0-9]{2})?$";
Pattern p=Pattern.compile(regex);
Matcher t=p.matcher(num);
if(!t.matches()){
System.out.println("你的输入数据不合法请再次输入!");
Input1();
}
}
//只能输入1位的数字:
public static void A0(String num){//对输入的数k进行检验是否输入有误
String regex="^/d{1}$";
Pattern p=Pattern.compile(regex);
Matcher t=p.matcher(num);
if(!t.matches()){
System.out.println("你的输入不合法请再次输入!");
Input2();
}
}*/
public static Scanner Input(){
Scanner sc=new Scanner(System.in);
return sc;
}
public static int Input2(){
int k;
Scanner sc=Input();
System.out.println("请输入你需要查找的第几个最大值:");
k=sc.nextInt();
//A0(String.valueOf(k));
return k;
}
public static double[] Input1(){
double a[]=new double[10];//存放输入的测试数据
Scanner sc=Input();
int i=0;
System.out.println("请输入10个数字经行测试");
while(i<10){
a[i++]=sc.nextDouble();
//A7(String.valueOf(a[i++]));
}
return a;
}
public static void main(String[] args) {
double a[]=ResearchMaxnum.Input1();
int k=ResearchMaxnum.Input2();
new ResearchMaxnum(a,k);
}
}