关于作业的问题~

关于作业的问题~

package com.javawork;

import java.util.Scanner;

public class Management {

	Scanner sc = new Scanner(System.in);

	// 显示提示信息的方法
	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("*********************************");
	}

	// 显示数据方法
	public void showData(int[] a, int legth) {
		System.out.println("数组元素为:");
		for (int i : a) {
			System.out.print(i + "  ");
		}
		System.out.println();
	}

	// 插入数据的方法
	public int[] insertData() {
		int[] a = new int[10];
		for (int i = 0; i < a.length - 1; i++) {
			System.out.println("请插入第" + (i + 1) + "个数据:");
			a[i] = sc.nextInt();
		}
		showData(a, a.length);
		return a;
	}

	// 在指定位置插入数据的方法
	public void insertAtArray(int[] a, int n, int k) {
		System.out.println("请输入要插入的元素:");
		n = sc.nextInt();
		System.out.println("请输入要插入的位置:");
		k = sc.nextInt();
		// for循环将要插入位置的元素依次往后移
		for (int i = a.length - 1; i >= k; i--) {
			a[i] = a[i - 1];
		}
		a[k] = n;
		showData(a, a.length);
	}

	// 查询能被3整除的数的方法
	public void divThree(int[] a) {
		// 定义一个boolea类型flag,默认为false,当有能被3整除的数时,flag=true
		boolean flag = false;
		for (int i : a) {
			if (i % 3 == 0) {
				System.out.print(i + "  ");
				flag = true;
			}
		}
		if (flag == false) {
			System.out.println("没有能被3整除的数!");
		}
		System.out.println();

	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner s = new Scanner(System.in);
		Management m = new Management();
		int[] data = null;// 定义一个数组存放插入的数据
		int n = 0, k = 0;// 定义n k变量 n表示插入的数,K镖师插入的位置
		int i = 5;// 定义变量i while循环结束的信号
		while (i != 0) {
			m.notice();
			System.out.println("请输入对应的数字进行操作:");
			i = s.nextInt();
			switch (i) {
			case 1:
				data = m.insertData();
				break;
			case 2:
				m.showData(data, data.length);
				break;
			case 3:
				m.insertAtArray(data, n, k);
				break;
			case 4:
				m.divThree(data);
				break;
			case 0:
				System.out.println("退出系统!");
				break;
			default:
				System.out.println("输入有误!请重新输入!");
				break;
			}
		}
	}

}

代码中的方法里边的备注都是看了提问之后才解决的,想问下老师以后遇到这种有个别要求但是一点思路都没有咋办,还有帮我看看这代码还有哪里需要改进的吗

正在回答

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

1回答

1、关于思路,多看多想多练,尤其在基础入门阶段,这是唯一的解决办法。

这也是为什么我们会在基础专题中设置大量的习题,就是为了帮助大家梳理每个人思考的方式,无论是编程题,上传作业还是选择题,都可以丰富视角,从不同的角度拓展思路。

2、几点建议补充,题目要求中有说明:

1、插入的数据不允许为零

2、判断是否能被3整除的位置,建议添加 i!=0 的判断,以去掉数组最后一个占位的元素。

  • 非常感谢!
    2017-10-31 18:13:07
  • public int[] insertData() { int[] a = new int[10]; boolean flag=false; for (int i = 0; i < a.length - 1; i++) { System.out.println("请插入第" + (i + 1) + "个数据:"); a[i] = sc.nextInt(); if(a[i]==0){ System.out.println("插入数据不允许为0,请重新选择插入数据"); flag=true; break; } } if(flag){ a=null; }else{ showData(a, a.length); } return a; } 老师请问一下 插入数据不能为零这样设置方法可以吗?
    2017-11-01 10:29:32
  • 要用到循环,如果为0要重新输入。可以试试如下思路完成:定义一个整型变量n,将从键盘接收的数据赋值给n,然后加一个判断,如果n为0则给出错误提示,并将i的值减1,为下次重新输入数据做准备,并调用continue语句结束当前循环继续下一次循环;在if语句外,也就是n不为0则arr[i]=n;
    2017-11-01 10:52:46
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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