JAVA数组

第1题已知一维数组中有5个数是有序排列,例如(10,20,30,40,50),接受用户输入的一个数: 30;
删除后的这个数组依然保持有序排列!

第2题是添加一个数

第3题一个数组中相同元素出现的次数

刚学的什么也不会写好注释!用FOR循环

第一题
import java.util.Scanner;

public class D {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num=input.nextInt();
int[] array={10,20,30,40,50};
//找到需要删除的数字的位置
for(int i=0;i<array.length;i++){
if(array[i]==num){
replace(i,array);
break;
}
if(i==array.length-1&&array[array.length-1]!=num){
System.out.println("输入的数据不存在");
}
}
}
//从满足的位置开始用后一个位置的数据替换前一个的数据,无数据的位置补0
public static void replace(int point,int[] array){
for(int i=point;i<array.length-1;i++){
array[i]=array[i+1];
}
array[array.length-1]=0;
print(array);
}
//打印结果
public static void print(int[] array){
for(int i=0;i<array.length;i++){
if(array[i]!=0){
System.out.print(array[i]);
System.out.print(" ");
}
}
}

}

第二题
import java.util.Arrays;
import java.util.Scanner;

public class E {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num=input.nextInt();
//保证你的数组足够大能插入数据
int[] array={10,20,30,40,50,0,0,0,0,0};
//找到插入位置
for(int i=0;i<array.length;i++){
if(array[i]>=num){
insert(i,array,num);
break;
}
}
//打印最终结果
for(int i=0;i<array.length;i++){
if(array[i]!=0){
System.out.print(array[i]);
System.out.print(" ");
}
}

}
//数据插入点后的数据依次往后移动
public static void insert(int point,int[] array,int num){
for(int i=array.length-1;i>point;i--){
array[i]=array[i-1];
}
array[point]=num;
}
}

第三题
import java.util.Arrays;

public class F {

public static void main(String[] args) {
int[] array={1,6,4,5,6,4,6,1,3,2,3,2};
//对数组进行排序
Arrays.sort(array);
int time=1;
for(int i=0;i<array.length;i++){
if(i!=array.length-1&&array[i]==array[i+1]){
time++;
}else{
System.out.println(array[i]+"出现了"+time+"次");
time=1;
}
}
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-11
楼上的回答有点问题
因为如果一开始的数据不是10,20,30,40,50
而是-1,0,0,0,1怎么办?
所以无数据的位置补0是不正确的
import java.util.*;
public class Test {

public static void main(String[] args) {
int[] arr=new int[]{10,20,30,40,50};
//定义一个删除后数组
int[] arrRltDel=new int[5];
//定义一个添加后数组
int[] arrRltAdd=new int[6];

//一。删除
System.out.println("请输入你要删除的一个数");
Scanner input=new Scanner(System.in);
int numDelete=input.nextInt();
int deleteIndex=-1;

for(int i=0;i<5;i++)
{
//当查找到你输入的数字时,把此下标赋给deleteIndex
if(numDelete==arr[i])
{
deleteIndex=i;
break;
}
}
//如果没找到,则输出错误信息
if(deleteIndex==-1)
{
System.out.println("此数组中没有你输入的数字");
}
//如果找到但不是最后一个
else if(deleteIndex>=0&&deleteIndex<4)
{

for(int i=0;i<deleteIndex;i++)
{
arrRltDel[i]=arr[i];
}
for(int i=deleteIndex;i<4;i++)
{
arrRltDel[i]=arr[i+1];
}
//如果此数组中有你所输入的数字打印删除后的数组
System.out.println("删除后的数组是:");
for(int i=0;i<4;i++)
{
System.out.print(arrRltDel[i]+"\t");
}
}
//如果找到了并且是最后一个
else
{
for(int i=0;i<4;i++)
{
arrRltDel[i]=arr[i];
}
for(int i=0;i<4;i++)
{
System.out.print(arrRltDel[i]+"\t");
}
}
//换行
System.out.println();

//二。添加
System.out.println("请输入你要添加的一个数");
int numAdd=input.nextInt();
for(int i=0;i<5;i++)
{
arrRltAdd[i]=arr[i];
}
arrRltAdd[5]=numAdd;
//如果依然要求排列有序,则排序,如果没要求,则可不写这句话
Arrays.sort(arrRltAdd);
System.out.println("添加后的数组是:");
for(int i=0;i<6;i++)
{
System.out.print(arrRltAdd[i]+"\t");
}
//换行
System.out.println();

//三。统计相等的数
for(int i=0;i<5;i++)
{
int countEquals=0;
for(int j=0;j<5;j++)
{
//如果相等,则计数器+1
if(arr[i]==arr[j])
{
countEquals++;
}
}
System.out.println(arr[i]+"出现了"+countEquals+"次");
}
}
}
相似回答