可否看下我的代码是否存在问题

来源:8-2 作业题

Protogensis

2018-12-28 10:01:17

import java.util.Scanner;


public class DataManage {

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

{

int[] a=new int[10];

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

Scanner sc=new Scanner(System.in);

while(true)//使插入的数据不得小于或等于0

{

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

a[i]=sc.nextInt();

if(a[i]<=0) {

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

}else {

break;

}

}

}

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) //显示所有数据方法

{

if(a[9]==0) {

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

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

}

}

else {

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

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

}

}

System.out.println();

}

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

{

Scanner sc=new Scanner(System.in);

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

n=sc.nextInt();

if(n==0) {

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

}

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

k=sc.nextInt();

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

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

}

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

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

}

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整除的数

{

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

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

if((a[i]%3)==0)

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

}

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();

Scanner sc=new Scanner(System.in);

int[] a = null;

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

while(true) {

dm.notice();

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

int m=sc.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("您所输入的数字并不存在于列表中!");

}

}

}


}


写回答

1回答

irista23

2018-12-28

你的代码有如下几个问题:

1、insert()方法中:

1)Scanner sc=new Scanner(System.in);尽量不要在循环里创建对象,否则循环一次创建一个对象,大大降低程序的运行效率

2)while(true)去掉,用来判断输入的数据不为0,不需要使用循环可以直接使用if条件判断,如果输入的数据<=0,执行i--并且使用continue继续执行下一次

2、showData方法中:

1)if和else执行的代码一样,可以去掉条件判断

3、insertAtArray()应该把指定位置处的数据依次往后移动,然后再给该位置赋值,要保证之前的数据不丢失。比如通过循环把倒数第二个数据赋值给倒数第一个数组元素,倒数第三个数据赋值给倒数第而个数组元素,以此类推,直到位置k处的数据赋值给它后面的数组元素。

4、divThree()方法

当没有能被3整除的元素时要给出错误提示。可以定义一个整型变量初始值为0,如果有能被3整除的数据,则变量值加1。然后根据count的值是否为0判断是否有能被3整除的元素。


1
hrista23
回复
hrotogensis
h 好的~~~
h018-12-28
共2条回复

0 学习 · 7235 问题

查看课程