Import otchet2.Ford;
public class Main {
/**Не может быть, я разобрался с ними.
* Пришлось немного голову поломать.
* Связные списки для меня новое что то.
* Сталкивался в делфи, но использовал уже
* готовые классы. Прикольно.
* Извините, я не стал уж все так сильно отделять.
* В принципе в этой задаче главное показать массив и список
* Список работает, от чего сам в шоке.) Осенило только под утро
* Но не защищен от неправильного ввода.
*
* @param args
*/
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
int ind;
Ford x = new Ford();
CList newList = new CList();
System.out.println("команды:\n 1-работать с массивом\n n-работать со списком");
ind=sc.nextInt();
if (ind==1)
InpuMass.inputMass();
else {
fordCar.printHelp();
while(ind!=-1){
ind=sc.nextInt();
// оператор выора.
switch(ind){
case 1:
x=fordCar.createFordCar();
newList.Add(x);
break;
case 2:
//удаление из списка
System.out.println("Введите номер объекта для удаления.");
ind=sc.nextInt();
newList.drop(ind);
System.out.println("Объект удален.");
break;
case 3:
for (int a=1;a<=newList.length();a++){
System.out.println(newList.getObj(a));
System.out.println("_____________");
}
break;
case 4:
System.out.println(newList.length());
break;
}
}
}
}
}
package otchet2.zadacha4;
public interface ListObj {
public int length();
public void drop(int a);
public void Add(Object x);
public Object getObj(int a);
}
package otchet2.zadacha4;
Import java.Util.Scanner;
Import otchet2.Ford;
public class InpuMass {
public static void inputMass(){
Scanner sc= new Scanner(System.in);
Ford x = new Ford();
DinMassiv j=new DinMassiv(2,2);
int ind=-2;
//выводится список имеющихся команд.
fordCar.printHelp();
while(ind!=-1){
ind=sc.nextInt();
// оператор выора.
switch(ind){
case 1:
// заполнение полей объекта происходит
// в рандомном режиме в классе Command
x=fordCar.createFordCar();
j.Add(x);
break;
case 2:
//удаление из списка
System.out.println("Введите номер объекта для удаления.");
ind=sc.nextInt();
j.drop(ind);
System.out.println("Объект удален.");
break;
case 3:
for (int a=0;a<j.length();a++){
System.out.println(j.getObj(a));
System.out.println("_____________");
}
break;
case 4:
System.out.println(j.length());
break;
}
}
}
}
package otchet2.zadacha4;
import java.util.Random;
Import otchet2.Ford;
public class fordCar {
public static void printHelp(){
System.out.println("команды");
System.out.println("цифры 1 добавить новый объект");
System.out.println("цифра 2 удалить новый объект");
System.out.println("цифра 3 вывести данные списка");
System.out.println("цифра 4 проверка размера списка");
}
public static Ford createFordCar(){
Random rnd= new Random();
String color[] = {"красный","Зеленый"};
String Fabric[] = {"Московский","Вологодский"};
String TypeCor[]={"Седан","Хатчбек"};
Ford a = new Ford();
a.setColor(color[rnd.nextInt(2)]);
a.setFabric(Fabric[rnd.nextInt(2)]);
a.setNomer(rnd.nextInt(1000));
a.setProbeg(rnd.nextInt(10000));
a.setSeries(rnd.nextInt(100));
a.setTypeCor(TypeCor[rnd.nextInt(2)]);
return a;
}
}
package otchet2.zadacha4;
public class DinMassiv implements ListObj{
private int Cells=1, Add=1;
private int ind=0;
private Object[] mass1= new Object[Cells];
public DinMassiv(int colCells, int colAdd) {
Cells=colCells;
Add=colAdd;
mass1= new Object[Cells];
}
public void Add(Object x){
mass1[ind]=x;
Object[] mass2= new Object[Cells];
ind++;
if (Cells==ind){
mass2=mass1;
mass1= new Object[Cells+Add];
for (int i=0;i<=Cells-1;i++){
mass1[i]=mass2[i];
}
mass2= new Object[Cells+Add];
Cells=Cells+Add;
}
}
public void drop(int a){
mass1[a]=null;
for (int i=a;i<ind;i++){
mass1[i]=mass1[i+1];
}
ind--;
}
public int length(){
return ind;
}
public Object getObj(int a){
return mass1[a];
}
}
package otchet2.zadacha4;
class Cell {
Object a;
Cell next;
Cell(Object b){
a=b;
next=null;
}
}
class CList implements ListObj{
int length=0;
private Cell first=new Cell(null);
private Cell current=first;//
public void Add(Object x){
current.next = new Cell(x);
current = current.next;
length++;
}
public Object getObj(int num){
Object x = new Object();
int take=0;
current = first;
do{
current = current.next;
take++;
}
while (take != num);
x=current.a;
return x;
}
public void drop(int num){
int take=0;
current = first;
if (num!=1){
do{
current = current.next;
take++;
}
while (take != num-1);
current.next=(current.next).next;
length--;
}
else
current.next=(current.next).next;
length--;
}
public int length(){
return length;
}
}
