今儿写了个能够往数组内储存、查询、重写数值的东西
结构很原始,代码很凌乱,但是看着它从不断报错逐渐变为输出的结果不符合预期,最后变为可以按照我的预期来运行,这种感觉还挺高兴的。
package com.test;
import java.util.Scanner;
public class Exercise2 {
public static int[] num = new int[100];//声明一个包含100个元素的数组
public static boolean[] num2 = new boolean[100];//声明一个包含100个真假值的boolean数组,用于协助上面的数组判断数组内某个元素有没有值
public static void main(String[] args) {
for(int i = 0;i<num2.length;++i){
num2[i] = false;//main方法首先将num2真假值判断数组内的所有值都初始化为false
}
Exercise2 main22 = new Exercise2();
main22.main2();//调用main2方法
}
public void main2(){
Scanner input = new Scanner(System.in);
System.out.println("选择要做的事情:");
System.out.print("1.录入新值 2.查询值 3.修改已有值 4.关闭系统");
System.out.println(" ");
int choose = input.nextInt();
switch(choose){//判断用户要进行的操作
case 1:
Exercise2 case1 = new Exercise2();
case1.InputNew();
case 2:
Exercise2 case2 = new Exercise2();
case2.Search();
case 3:
Exercise2 case3 = new Exercise2();
case3.Rewrite();
case 4:
System.exit(0);
}
}
public void InputNew(){//写入新数值的方法
int judge = 0;//初始化一个用于判断num数组内有多少元素已经被写入数值的变量
Scanner input2 = new Scanner(System.in);
boolean which = false;//用于判断是否结束do~while循环
for(int i = 0;i<num2.length;++i){
if(num2[i] == true){
judge = judge + 1;//如num2[i]的值为true则其对应的num[i]必然有已经储存的值,所以计数变量+1
}
}
System.out.println("空余储存区为:" + (100 - judge) + "个");
System.out.println("可用储存区编号为:");
System.out.println(" ");
for(int i = 0;i<num.length;++i){
if(num2[i] == false){
System.out.print((i + 1) + " ");//输出当前可用的元素编号
}
}
do{
System.out.println(" ");
System.out.println("请输入您想使用的储存区编号:");
int store = input2.nextInt();
if(num2[store - 1] == false){//仅当num2的该位置元素值为false时可以向其对应的num数组储存值
System.out.println("请输入您想储存于第" + store + "储存区的数值:");
int store2 = input2.nextInt();
num[store - 1] = store2;
num2[store - 1] = true;
which = true;//改变判断变量用于结束循环
System.out.println("储存成功,现在返回主程序");
Exercise2 a1 = new Exercise2();//写入完成,回到main2方法
a1.main2();
}
System.out.println("您输入的编号区已有数据,请重新输入");
}while(which == false);
}
public void Search(){//查询已有数值的方法
Scanner input3 = new Scanner(System.in);
boolean judge = false;
do{
System.out.println("请输入您想查询的储存区编号:");
int which = input3.nextInt();
if(num2[which - 1] == true){
System.out.println("您查询的第" + which + "个储存区内的值为:");
System.out.println(num[which - 1]);
judge = true;
System.out.println("查询结束,返回主程序");
Exercise2 a2 = new Exercise2();
a2.main2();
}
System.out.println("错误:该区域尚未被写入数值,请重新查询");
}while(judge == true);
}
public void Rewrite(){//重写已有数值的方法
Scanner input4 = new Scanner(System.in);
boolean judge = false;
do{
System.out.println("请输入您想重写数值的储存区编号:");
int which = input4.nextInt();
if(num2[which - 1] == true){
System.out.println("请输入您想在第" + which + "个储存区重写的数值:");
int newNum = input4.nextInt();
num[which - 1] = newNum;
judge = true;
System.out.println("重写成功,现在返回主程序");
Exercise2 a3 = new Exercise2();
a3.main2();
}
System.out.println("错误:该区域尚未被写入数值,请重新选择");
}while(judge == false);
}
}