【求助】关于数组元素变换的问题探讨 本帖最后由 quickily 于 2013-03-18 16:57:30 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你将最大值和a[idx1]交换后,a[idx2]的值可能就不是最小值了,所以要在最大值交换完后,再找最小值。话说你的程序不能连续输入啊import java.util.*;public class Exer35_4 { public static void main(String[] args) { int i,j; int k = 0; //标识输入数组的元素个数 int numMax = 0; int numMin = 0; int idx1 = 0; //初始最大元素的排位数 int idx2 = 0; //初始最小元素的排位数 int temp = 0; int t = 0; int[] a = new int[20]; ////定义所能输入的最大数组 Scanner sc = new Scanner(System.in); System.out.println("请输入一个元素个数不大于20的数组,以-1做为输入结束标志:"); for (i = 0; i <= 20; i++) //得到输入数组的元素值,以及个数。 { a[i] = sc.nextInt(); if (a[i] == -1) { break; } k = i + 1; } System.out.print("输入的数组元素个数为:" + k + ",数组元素分别为:"); for (j = 0; j < k; j++) { System.out.print(a[j] + " "); } //将最大的放在a[0] numMax = a[0]; for (j = 0; j < k; j++) { if (a[j] > numMax) { numMax = a[j]; idx1 = j; } } System.out.println(); System.out.print("最大的元素为:" + a[idx1]); if (idx1 != 0) { temp = a[0]; a[0] = a[idx1]; a[idx1] = temp; } System.out.println("调换最大值后的数组顺序为:"); for (j = 0; j < k; j++) { System.out.print("a[" + j + "] = " + " " + a[j] + " "); } System.out.println(); //jianng numMin = a[k-1]; idx2 = k -1; for (j = 0; j < k; j++) //若最小值为最后一位,则idx2 为初始值,即为0,需考虑此情况。 { if (a[j] < numMin) { numMin = a[j]; idx2 = j; } } if (idx2 != k - 1) { t = a[k-1]; a[k-1] = a[idx2]; a[idx2] = t; } System.out.print(",最小的元素为:" + a[idx2]); System.out.println(); for (j = 0; j < k; j++) { System.out.print("a[" + j + "] = " + " " + a[j] + " "); } System.out.print("\n调整后得到的最终数组为:"); for (j = 0; j < k; j++) { System.out.print(a[j] + " "); } }} for (i = 0; i <= 20; i++) //得到输入数组的元素值,以及个数。 { a[i] = sc.nextInt(); if (a[i] == -1) { break; } k = i + 1; }此处实现了连续输入。 什么是轻量级 什么是重量级 用JUnit总是报错,找不到什么问题,求助前辈 java中怎么去除数值.0后缀? 火龙果 杨辉三角形 问题 请问如何自定义java程序中的鼠标形状? 怎么static 还可以这样用呀? 请教各位!!! SOCKET问题,答好即给分 关于actionlistener的简单问题 请问JVM 的 file.encoding 的值在那个配置文件中更改、 有大佬网盘存的有JDK 两个数组比较(Java语言实用) 静态资源不能加载的问题
话说你的程序不能连续输入啊
import java.util.*;
public class Exer35_4
{
public static void main(String[] args)
{
int i,j;
int k = 0; //标识输入数组的元素个数
int numMax = 0;
int numMin = 0;
int idx1 = 0; //初始最大元素的排位数
int idx2 = 0; //初始最小元素的排位数
int temp = 0;
int t = 0;
int[] a = new int[20]; ////定义所能输入的最大数组
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个元素个数不大于20的数组,以-1做为输入结束标志:");
for (i = 0; i <= 20; i++) //得到输入数组的元素值,以及个数。
{
a[i] = sc.nextInt();
if (a[i] == -1)
{
break;
}
k = i + 1;
}
System.out.print("输入的数组元素个数为:" + k + ",数组元素分别为:");
for (j = 0; j < k; j++)
{
System.out.print(a[j] + " ");
}
//将最大的放在a[0]
numMax = a[0];
for (j = 0; j < k; j++)
{
if (a[j] > numMax)
{
numMax = a[j];
idx1 = j;
}
}
System.out.println();
System.out.print("最大的元素为:" + a[idx1]);
if (idx1 != 0)
{
temp = a[0];
a[0] = a[idx1];
a[idx1] = temp;
}
System.out.println("调换最大值后的数组顺序为:");
for (j = 0; j < k; j++)
{
System.out.print("a[" + j + "] = " + " " + a[j] + " ");
}
System.out.println();
//jianng
numMin = a[k-1];
idx2 = k -1;
for (j = 0; j < k; j++) //若最小值为最后一位,则idx2 为初始值,即为0,需考虑此情况。
{
if (a[j] < numMin)
{
numMin = a[j];
idx2 = j;
}
}
if (idx2 != k - 1)
{
t = a[k-1];
a[k-1] = a[idx2];
a[idx2] = t;
}
System.out.print(",最小的元素为:" + a[idx2]);
System.out.println(); for (j = 0; j < k; j++)
{
System.out.print("a[" + j + "] = " + " " + a[j] + " ");
}
System.out.print("\n调整后得到的最终数组为:");
for (j = 0; j < k; j++)
{
System.out.print(a[j] + " ");
}
}
}
{
a[i] = sc.nextInt();
if (a[i] == -1)
{
break;
}
k = i + 1;
}
此处实现了连续输入。