可否看下我的代码是否存在问题
来源: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回答
你的代码有如下几个问题:
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整除的元素。
相似问题