可否帮忙看下代码存在的问题(第二次)

来源:8-2 作业题

Protogensis

2018-12-28 14:59:42

import java.util.Scanner;


public class DataManage {

private Scanner sc;

private Scanner sc2;

private static Scanner sc3;


public int[] insert() //插入数据方法

{

sc = new Scanner(System.in);

int[] a=new int[10];

for(int i=0;i<a.length-1;i++) {

System.out.println("请输入第"+(i+1)+"个数据:");

a[i]=sc.nextInt();

if(a[i]<=0)//判断输入值是否为0

{

System.out.println("您所输入的数据不能小于或等于0!");

i--;

continue;

}

}

System.out.println("数组元素为");

for(int i=0;i<a.length-1;i++) {

System.out.print(a[i]+" ");

}

System.out.println();

return a;

}

public void showData(int[] a,int length) //显示所有数据方法

{

System.out.println("数据元素为:");

for(int i=0;i<length;i++) {

System.out.print(a[i]+" ");

}

System.out.println();

}

public void insertAtArray(int[] a, int n, int k) //在指定位置插入数据

{

for(int i=9;i>k;i--) {

a[i]=a[i-1];

}

System.out.println("请输入要插入的数据:");

sc2 = new Scanner(System.in);

n=sc2.nextInt();

if(n==0) {

System.out.println("您所输入的数据不能小于或等于0!");return;

}

System.out.println("请输入要插入的位置:");

k=sc2.nextInt();

if(k<=0||k>a.length) {

System.out.println("您所插入的位置是错误的!");return;

}

a[k-1]=n;

for(int i=0;i<a.length;i++) {

System.out.print(a[i]+" ");

}

System.out.println();

}

 

public void divThree(int[] a)//查询能被3整除的数

{

int count=0;

System.out.println("数组中能被3整除的数为:");

for(int i=0;i<a.length;i++) {

if((a[i]%3==0)&(a[i]!=0)) {

System.out.print(a[i]+" ");

count+=1;

}

}

if(count==0)

System.out.print("没有能被3整除的数");

System.out.println();

}

 

public void notice() {

System.out.println("**************************************");

System.out.println("\t1--插入数据");

System.out.println("\t2--显示所有数据");

System.out.println("\t3--在指定位置插入数据");

System.out.println("\t4--查询能被3整除的数据");

System.out.println("\t0--退出");

System.out.println("**************************************");

}

public static void main(String[] args) {

DataManage dm =new DataManage();

sc3 = new Scanner(System.in);

int[] a = null;

int n=0,k=0,length=0;

while(true) {

dm.notice();

System.out.println("请输入对应的数字进行操作:");

int m=sc3.nextInt();

switch(m) {

case 1:

a=dm.insert();length=9;break;

case 2:

dm.showData(a, length);

break;

case 3:

dm.insertAtArray(a,n,k);length=10;break;

case 4:

dm.divThree(a);break;

case 0:

return;//直接退出

default:

System.out.println("您所输入的数字并不存在于列表中!");

}

}

}


}


写回答

2回答

irista23

2018-12-28

insertAtArray()方法插入数据的逻辑还是有问题:

可以定义一个for循环,循环变量i初识值为a.length-1,判断条件是i>=k(k为用户要插入数据的位置); i的值是递减的,循环体中的内容就是把前一个元素的值赋值给后一个元素,即a [i]=a [i-1];这样就达到了移位的效果。循环外将n(n为用户要插入的数据)赋值给a[k]

1
hrotogensis
h 运行起来没有问题。。。
h018-12-28
共2条回复

irista23

2018-12-28

根据之前提供给你的逻辑处理,参考一下如下代码:

for (int i = a.length-1; i >= k - 1; i--) {
    a[i] = a[i - 1];
}
a[k - 1] = n;


1
hrotogensis
回复
hrista23
h 解决了。交作业之后如果还有问题可以再请教吗
h018-12-28
共6条回复

0 学习 · 7235 问题

查看课程