老师,我的代码里只有输入数据和退出功能可以用,其他都用不了,请老师帮我看看

老师,我的代码里只有输入数据和退出功能可以用,其他都用不了,请老师帮我看看

package com.imooc;

import java.util.Scanner;

public class MyHomework {

//向数组中插入数据

public int[] insertData(){

Scanner sc=new Scanner(System.in);

int[] arr=new int[10];

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

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

int cha=sc.nextInt();

arr[i]=cha;

}

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

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

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

}

return arr;

}

//显示所有数据

public void showData(int[] arr,int length){

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

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

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

}

}

//在指定位置插入数据

public void insertAtArray(int[] arr,int n,int k){

arr=new int[10];

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

Scanner sc=new Scanner(System.in);

n=sc.nextInt();//n为要插入的数据

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

Scanner sc1=new Scanner(System.in);

k=sc1.nextInt();//K为插入的位置

int L=arr.length;//没插入数据前数组的长度

if(k<=L){

for(;L>k-1;L--){

arr[L]=arr[L-1];

}}

else{

arr[k]=n;

}

}

//查询能被3整除的数据

public void divThree(int[] arr){

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

if(arr[i]%3==0){

System.out.println("能被3整除的数据有:"+arr[i]);

}

}

}

//显示提示信息

public void notice(){

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

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

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

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

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

System.out.println("0--退出");

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

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

}

public static void main(String[] args) {

MyHomework mulu=new MyHomework();

mulu.notice();

Scanner sc=new Scanner(System.in);

int[] a=new int[10];

int m;

do{

m=sc.nextInt();

switch(m){     //m为功能序号

case 1:

  a=mulu.insertData();

  mulu.notice();

  break;

case 2:

      mulu.showData(a,a.length);

      mulu.notice();

      break;

case 3:

  int n=0;

  int k=0;

  mulu.insertAtArray(a, n, k);

  mulu.notice();

  break;

case 4:

          mulu.divThree(a);

          mulu.notice();

          break;

case 0:System.out.println("退出程序!");

}

}while(m!=0);

sc.close();

 }

}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
Tender10 2017-06-18 13:35:34

1、插入数据不能为0,你就判断一下你接收的数据是否为0,当等于0的时候让用户重新输入。也就是判断cha,if(cha==0)。

2、你可以定义一个int型变量count,在divThree方法的if判断中当能有能被3整除的数据就让count值加1。循环结束后判断count值是否等于0,如果等于0就输出”没有能被3整除的数”,如果不等于0输出能被3整除的数。

irista23 2017-06-17 10:23:12

代码主要有如下几个问题:

1、插入数据缺少数据不能为0的检查;

2、输出数组中能被3整除的方法里缺少如果没有可以被3整数的数的提示信息;

3、在指定位置插入数据的方法中:

1)arr不需要在这里面重新创建;

2)L = arr.length,当L为10时数组越界,所以L初始值应该是arr.length-1,参照如下修改:

// arr = new int[10];
System.out.println("请输入要插入的数据:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();// n为要插入的数据
System.out.println("请输入要插入的位置:");
Scanner sc1 = new Scanner(System.in);
k = sc1.nextInt();// K为插入的位置
// int L = arr.length-1;// 没插入数据前数组的长度
for (int L = arr.length - 1; L > k; L--) {
    arr[L] = arr[L - 1];
}
arr[k] = n;

如果解决了你的疑惑,请采纳,祝学习愉快~


  • 提问者 kris1992 #1
    (1、插入数据缺少数据不能为0的检查; 2、输出数组中能被3整除的方法里缺少如果没有可以被3整数的数的提示信息;) 老师,这两个判断具体怎么写啊?
    2017-06-17 20:29:40
Jim18 2017-06-17 07:54:40

在指定位置插入数据这个方法有点问题,太凌乱,提示数组越界,其他方法都可以运行。还是等老师专业解答吧

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师