// Ohjelma käyttää kahta taulukkoa.
// Taulukkoon on mahdollista lisätä alkioita.
// Jokaisen lisäyksen jälkeen muuttuja check vaihtaa
// arvoaan välillä 0 ja 1.
// riippuen tästä arvosta ohjelma tulostaa joko taulun x tai
// taulun y.
// Ennen uuden alkion luontia ohjelma formatoi toisen taulukon ja lisää
// sen pituutta yhdellä. Tämän jälkeen se kopioi toisesta taulukosta
// kaikki alkiot viimeistä lukuunottamatta ja pyytää käyttäjältä viimeisen
// alkion arvon. Toinen taulukko siis pitää alkioiden tiedot sisällään
// formatoinnin aikana.
// ohjelma luuppaa "menua" niin kauan ennen kun muuttuja 'asd' saa arvon alle 0.
// 'asd' arvo kuitenkin nousee joka luupin aikana, kunnes käyttäjä valitsee
// 'c': lopeta jolloin 'asd' saa arvon -1.
package ohjelmoinninperusteet;
public class osoite2 {
public static void main (String[]args){
String [] swaptauluy;
swaptauluy = new String[0];
int sty;
int stx;
String [] swaptaulux;
swaptaulux = new String[0];
int check;
check = 0;
int i;
int asd;
for (asd = 1; asd>0; asd++){
sty = swaptauluy.length;
stx = swaptaulux.length;
System.out.println("a) Tulosta");
System.out.println("b) Lisää alkio");
System.out.println("c) Lopeta");
System.out.println("d) Poista alkio\n");
char ab;
ab = Oma.lueChar();
System.out.println("\n\n");
switch (ab){
case 'a':
if ((swaptaulux.length == 0 && check == 1) || (swaptauluy.length == 0 && check == 0)) {
System.out.print("Taulu on tyhjä\nLisää tietoja ennen tulostamista.\n\n");
}
else if (check == 0){
System.out.println("\n");
for (i = 0; i<sty; ++i){
System.out.println(""+swaptauluy[i]+"");
}
System.out.println("\n");
}
else
{
System.out.println("\n");
for (i = 0; i < stx; ++i) {
System.out.println("" + swaptaulux[i] + "");
}
System.out.println("\n");
}
break;
case 'b':
stx = swaptaulux.length;
sty = swaptauluy.length;
if (check == 0){
swaptaulux = new String[sty+1];
for (i=0; i<sty; i++) {
swaptaulux[i] = swaptauluy[i];
}
System.out.println("anna uusi alkio "+(i+1)+"");
swaptaulux[i] = Oma.lueString();
check = 1;
System.out.println("\n");
}
else
{
swaptauluy = new String[stx+1];
for (i=0; i<stx; i++) {
swaptauluy[i] = swaptaulux[i];
}
System.out.println("anna uusi alkio "+(i+1)+"");
swaptauluy[i] = Oma.lueString();
check = 0;
System.out.println("\n");
}
break;
case 'c':
asd = -1;
break;
// d) poisto toimii ikään kuin vetämällä palikan toisen taulun alta.
// ensin luodaan -1 pituinen taulu y[] ja kopiodaan tieto y[i] <- x[i]
// ja palikan otto paikasta lähtien y[i] <- x[i+1]
case 'd':
stx = swaptaulux.length;
sty = swaptauluy.length;
if (check == 1) {
int poistoarvo;
System.out.println("Minkä alkion haluat poistaa?\n");
String poisto = Oma.lueString();
for (i = 0; i < stx; i++) {
if (swaptaulux[i].equals(poisto)) {
poistoarvo = i;
if (sty == 1){
swaptauluy = new String[0];
}
else {
swaptauluy = new String[stx-1];
for (i=0; i<poistoarvo; i++){
swaptauluy[i] = swaptaulux[i];
}
for (i = poistoarvo; i < stx; i++) {
if(swaptaulux[poistoarvo].equals(stx))
{
swaptauluy = new String[stx-1];
for (i = 0; i<=poistoarvo; i++){
swaptauluy[i] = swaptaulux[i];
}
check = 0;
}
else {
for (i = poistoarvo; i<stx-1; i++){
swaptauluy[i] = swaptaulux[i + 1];
}
check = 0;
}
}
System.out.println("Alkio poistettu\n");
}
}
}
}
else {
int poistoarvo;
System.out.println("Minkä alkion haluat poistaa?\n");
String poisto = Oma.lueString();
for (i = 0; i < sty; i++) {
if (swaptauluy[i].equals(poisto)) {
poistoarvo = i;
swaptaulux = new String[sty-1];
for (i=0; i<poistoarvo; i++){
swaptaulux[i] = swaptauluy[i];
}
for (i = poistoarvo; i < sty; i++) {
if(swaptauluy[poistoarvo].equals(sty))
{
swaptaulux = new String[sty-1];
for (i = 0; i<=poistoarvo; i++){
swaptaulux[i] = swaptauluy[i];
}
check = 1;
}
else {
for (i = poistoarvo; i<sty-1; i++){
swaptaulux[i] = swaptauluy[i+1];
}
check = 1;
}
}
System.out.println("Alkio poistettu\n");
}
}
}
break;
default:
}
}
}
}