Kolozzeum Forum - Sveriges största träningsforum
Gå tillbaka   Kolozzeum Forum - Sveriges största träningsforum > Träning > Allmänt Forum

Svara
 
Ämnesverktyg Visningsalternativ
Gammal 2019-04-04, 21:24   #2146
Agitator
Den rättmätige
 
Agitators avatar
 
Reg.datum: Mar 2014
Inlägg: 1 792
Jag som är sugen på att skriva en liten app för android som även portas eller körs native i ios. Vart vänder jag mig för att på enklast sätt komma igång? Jag ser det mer som ett sätt att lära sig när man har ett mål att försöka lösa än att nöta övningar.

Vad gäller för detta 2019? Förra gången jag tittade på detta 2014 tyckte jag det kändes för bökigt att komma igång med något vettigt som lirar bra på båda plattformarna.
__________________
Citat:
Ursprungligen postat av King Grub Visa inlägg
Att träna utan steroider är som att vattna gräsmattan när det regnar. Slöseri med tid.
Citat:
Ursprungligen postat av King Grub Visa inlägg
Det är aldrig för tidigt för första kuren.
Citat:
Ursprungligen postat av King Grub Visa inlägg
Va, kreatin? Är det kreatin vi har pratat om?
Agitator är inte uppkopplad   Svara med citat
Gammal 2019-04-04, 23:10   #2147
eternallord
Registered User
 
eternallords avatar
 
Reg.datum: Aug 2009
Inlägg: 190
React native
__________________
"Hey, I'm not surprised motherfuckers" -Nate Diaz
eternallord är inte uppkopplad   Svara med citat
Gammal 2019-04-06, 15:35   #2148
Baldr
Registered User
 
Baldrs avatar
 
Reg.datum: Jun 2018
Inlägg: 22
Citat:
Ursprungligen postat av Snubben Visa inlägg
All utbildning handla rom vad du gör med den. Den utbildningen verkar svepa över det mesta så du får nog kunskap om en hel del men säkerligen bara väldigt ytlig sådan.
Skummade bara men verkar ju vara 800 timmar C++ innan man breddar sig. Då bör man komma ganska långt med 200 timmar inom respektive område. Å andra sidan så är det kanske inte så kul att harva C++ om man vill bli webbutvecklare.
Baldr är inte uppkopplad   Svara med citat
Gammal 2019-06-28, 12:59   #2149
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Någon som vet hur jag ska skriva om koden för att inte få detta error:

Exception in thread "main" java.lang.IllegalStateException: Scanner closed
at java.util.Scanner.ensureOpen(Scanner.java:1081)
at java.util.Scanner.hasNext(Scanner.java:1444)
at java.util.Scanner.hasNextInt(Scanner.java:2033)
at java.util.Scanner.hasNextInt(Scanner.java:2018)
at Dagis.main(Dagis.java:26)

Jag vill alltså returnera till min menu efter att man gjort val med en switch sats, jag har stoppat in all kod i en while{}

Kod:
boolean exit = false;
			Scanner input = new Scanner(System.in);
			while(!exit) {								
			System.out.println("Välj något alternativ");
	        System.out.println("-------------------------\n");
	        System.out.println("0 - Lägg till en hund");	        
	        System.out.println("1 - Uppdatera en hunds tid");
	        System.out.println("2 - Ta bort en hund");
	        System.out.println("3 - Visa alla hundar");
	        System.out.println("4 - Sök efter en hund");
	        System.out.println("5 - Beräkna pris");
	        System.out.println("6 - Sök efter hundras");
	        System.out.println("7 - Sök efter en hund baserat på hund id");
	        System.out.println("8 - Visa totalt antal timmar för alla hundar");
	        System.out.println("9 - Avsluta");
	        	        
	        int menuVal;
	        if(input.hasNextInt()) {
	        	 menuVal = input.nextInt();                 //Något knas här
	        }
	        else {
	    	      menuVal = 10;	        	
	        }
	        
	        switch(menuVal) {
	        
	        case 0:                   //lägg till hund metod
	        Hund nyHund = new Hund();    
	        nyHund = adderaHund();
			hundDagis[0] = nyHund;    //Överskriver den här positionen 0 hela tiden?			
			break;
				        
	        case 1: //uppdatera hund tid metod
	        case 2: //ta bort hund
	        	
	        case 3: //visa alla hundar
	        	for(Hund hund: hundDagis) {
	        		if(hund != null) {
	        		System.out.println("HundId: "+hund.hundId+"\n"+"Hundnamn: "+hund.hundNamn);
	        		}	        		
	        	}
	        	break;
	        	
	        case 4: //sök hund metod
	        case 5: // pris metod
	        case 6: //sök hundras metod
	        case 7: //sök hund med hundid metod
	        case 8: // totalt antal timmar metod
	        	
	        case 9: // exit(); avlsuta program
	        exit=true;
	        break;	        
	        }
	        input.close();	        
			}
Problemet är vid

Kod:
if(input.hasNextInt()) {
	        	 menuVal = input.nextInt();                 //Något knas här
	        }
	        else {
	    	      menuVal = 10;	        	
	        }
Det går att starta programmet och mata in ett val , men vid en andra "körning" av menyn så kommer felet eftersom "input.hasNextInt" leter efter ett värde direkt som inte finns eller något? Har provat utan if satsen, och utan else menuval=10, det kanske inte ens är något som behövs? Experimenterar och provar allt men kommer inte fram till något.

Hur skriver man det här rätt? Har letat på forum i timmar men hittar inget förslag som hjälper.

Senast redigerad av Wequ den 2019-06-28 klockan 13:02.
Wequ är inte uppkopplad   Svara med citat
Gammal 2019-06-28, 19:24   #2150
F Ultra
Registered User
 
F Ultras avatar
 
Reg.datum: Dec 2013
Ort: Kållered
Inlägg: 1 035
Vi får hoppas att det finns någon som kan Java här som kan ge bättre hjälp då jag bara kodar i ren C men min tanke när jag ser detta är att input.nextInt() och input.hasNextInt() för problem när de kommer till ett tecken som inte är en siffra som t.ex den newline \n det blir när du trycker på enter-knappen för att mata in ditt val.

Speciellt som det smäller andra gången som du kör, så troligen skall du se till att läsa in en hel rad per gång och sedan läsa in ditt heltal från den raden. Som de t.ex gör i det här exemplet som jag hittade på nätet:

Kod:
public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    boolean continueInput = true;
    do {
        try {
            System.out.println("Enter an integer:");
            int num = input.nextInt();

            System.out.println("the number is " + num);
            continueInput = false;
        }
        catch (InputMismatchException ex) {
            System.out.println("Try again. (Incorrect input: an integer is required)");
        } 
        input.nextLine();
    }   
    while (continueInput);

}
som du ser så kör de input.nextLine() för att läsa in nästa rad och blanka det "state" som input.nextint() behöver.
F Ultra är inte uppkopplad   Svara med citat
Gammal 2019-06-28, 20:01   #2151
Buckethead
Registered User
 
Bucketheads avatar
 
Reg.datum: Mar 2004
Inlägg: 410
@Wequ: Min gissning utifrån felmeddelandet är att du bör flytta ut input.close(); från din while-loop.

För på andra iterationen så har du stängt din scanner.
Buckethead är inte uppkopplad   Svara med citat
Gammal 2019-06-28, 21:49   #2152
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Tack för svaren, blev lite klokare och tog inspiration. Har lagt till lite för att se vart felet uppstår och med koden just nu så är det bara vid "case 0" det sker, alltså när jag ska lägga till en hund genom att anropa en metod längre ner.
Kod:
public class Dagis {
	
	public static void main(String args[]) {
				    
		    Hund[] hundDagis = new Hund[20];		   //Array som innehåller objekt av Hund classen. 			   
			boolean exit = false;			
			Scanner input = new Scanner(System.in);
			do {				
				try {					
			System.out.println("\n");
			System.out.println("Välj något alternativ");
	        System.out.println("-------------------------");
	        System.out.println("0 - Lägg till en hund");	        
	        System.out.println("1 - Uppdatera en hunds tid");
	        System.out.println("2 - Ta bort en hund");
	        System.out.println("3 - Visa alla hundar");
	        System.out.println("4 - Sök efter en hund");
	        System.out.println("5 - Beräkna pris");
	        System.out.println("6 - Sök efter hundras");
	        System.out.println("7 - Sök efter en hund baserat på hund id");
	        System.out.println("8 - Visa totalt antal timmar för alla hundar");
	        System.out.println("9 - Avsluta");	         
	        int menuVal = input.nextInt();                 //Något knas här
	      
	        switch(menuVal) {
	        
	        case 0:                   //lägg till hund metod
	        Hund nyHund = new Hund();       //*** DET HÄR CASET GER ERROR 
	        nyHund = adderaHund();
			hundDagis[0] = nyHund;    //Det här overwritar [0] hela tiden?
			break;
				        
	        case 1: //uppdatera hund tid metod
	        	System.out.println("Not implemented");
	        	break;
	        case 2: //ta bort hund
	        	System.out.println("Not implemented");
	        	break;
	        case 3: //visa alla hundar
	        	int a = 0;                         
	        	for(int i = 0; i < hundDagis.length; i++) {        //Det här kollar om det finns hundar inne på dagiset
	        		if(hundDagis[i] == null) {                    //En loop adderar till inten a om det finns ett null värde på varje plats i arrayen
	        			a++;                                     //finns det ett null värde stiger int a med 1
	        		}
	        	}
	        	if(a==20) {                                          //Når int a värdet 20 betyder det att det är tomt på dagiset(arrayen)
        			System.out.println("Inga hundar finns just nu!");
        		}
	        	else {
	        	for(Hund hund: hundDagis) {	        		
	        		if(hund != null) {
	        		System.out.println("HundId: "+hund.hundId+"\n"+"Hundnamn: "+hund.hundNamn);
	        		}	        		
	        	}
	        	}
	        	break;
	        	
	        case 4: //sök hund metod
	        	System.out.println("Not implemented");
	        	break;
	        case 5: // pris metod
	        	System.out.println("Not implemented");
	        	break;
	        case 6: //sök hundras metod
	        	System.out.println("Not implemented");
	        	break;
	        case 7: //sök hund med hundid metod
	        	System.out.println("Not implemented");
	        	break;
	        case 8: // totalt antal timmar metod
	        	System.out.println("Not implemented");
	        	break;
	        case 9: // exit(); avlsuta program
	        exit=true;
	        System.out.println("Programmet har avlsutats");
        	break;	              
	        }		        
				}
				catch(InputMismatchException ex) {
					System.out.println("Försök igen, en siffra krävs!");
				}	 
				//input.nextLine();						
			}while(!exit);	
			input.close();					     		
	}
	
	public static Hund adderaHund() {
		
		Hund nyhund = new Hund();
		
		Scanner input1 = new Scanner(System.in);
		
		System.out.print("Skriv in hundid: ");
		nyhund.hundId = input1.nextLine();
		
		System.out.print("Skriv in namn på hunden: ");
		nyhund.hundNamn = input1.nextLine();
	
		System.out.print("\n"+"Hunden är tillagd!");		
		input1.close();     //Stäng scannern
		return nyhund;
		
	}
	
}
Alla cases förutom case 0 går tillbaka till menyn utan error. En körning ser ut så här.(T.ex : skriver in 1. och sedan 0 för att fylla i hund uppgifter)



Välj något alternativ
-------------------------
0 - Lägg till en hund
1 - Uppdatera en hunds tid
2 - Ta bort en hund
3 - Visa alla hundar
4 - Sök efter en hund
5 - Beräkna pris
6 - Sök efter hundras
7 - Sök efter en hund baserat på hund id
8 - Visa totalt antal timmar för alla hundar
9 - Avsluta
1
Not implemented


Välj något alternativ
-------------------------
0 - Lägg till en hund
1 - Uppdatera en hunds tid
2 - Ta bort en hund
3 - Visa alla hundar
4 - Sök efter en hund
5 - Beräkna pris
6 - Sök efter hundras
7 - Sök efter en hund baserat på hund id
8 - Visa totalt antal timmar för alla hundar
9 - Avsluta
0
Skriv in hundid: 1
Skriv in namn på hunden: Pelle

Hunden är tillagd!Exception in thread "main"

Välj något alternativ
-------------------------
0 - Lägg till en hund
1 - Uppdatera en hunds tid
2 - Ta bort en hund
3 - Visa alla hundar
4 - Sök efter en hund
5 - Beräkna pris
6 - Sök efter hundras
7 - Sök efter en hund baserat på hund id
8 - Visa totalt antal timmar för alla hundar
9 - Avsluta
java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Dagis.main(Dagis.java:26)

Kan det ha något att göra med att i metoden adderaHund som anropas vid case 0 så kommer en till Scanner in i bilden? Och när den hoppar tillbaka till toppen av do{ så blir det knas? Det känns som att det är placeringen av scannern och Close() som har något med saken att göra, men provar typ alla ställen och ännu inte fått till något som funkar

Man ser ju att den kör menyn igen efter att case 0 avslutats, men att det ballar ur vid rad 26 där
Kod:
int menuVal = input.nextInt();                 //Något knas här
är. Case 3 skriver ut "Inga hundar finns ..." precis som den ska(eftersom att det inte finns några hundar) och returnerar till menyn utan konstigheter.
Även catch exception fungerar och returnerar menyn när man inte matar in en siffra.
Wequ är inte uppkopplad   Svara med citat
Gammal 2019-06-28, 22:32   #2153
svenbanan
Banned User
 
Reg.datum: Jan 2012
Inlägg: 10 099
Det ser ut som att du skapar ett hundobjekt i din inputloop

PHP-kod:
case 0:                   //lägg till hund metod
   
Hund nyHund = new Hund();       //*** DET HÄR CASET GER ERROR 
   
nyHund adderaHund();
   
hundDagis[0] = nyHund;    //Det här overwritar [0] hela tiden?
   
break; 
Sedan skapar du ett nytt hundobjekt i din funktion och försöker returnera detta objekt till det objekt du skapade i huvudloopen.

PHP-kod:
public static Hund adderaHund() {    
   
Hund nyhund = new Hund();
...
...
   return 
nyhund;

I mina ögon ser detta konstigt ut.

Om du har en funktion som ska modifiera hundId och hundNamn så borde denna funktion vara en metod i klassen Hund. Dvs du anropar den genom nyHund.adderaHund();

I denna metod skapar du då inte ett nytt hundobjet utan du modifierar this.hundId och this.hundNamn.

Men det var länga sedan jag kodade nåt i Java. Så jag kanske blandat ihop syntaxen, och jag kanske inte heller minns rätt angående hur saker och ting returneras.
svenbanan är inte uppkopplad   Svara med citat
Gammal 2019-06-28, 22:55   #2154
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Citat:
Ursprungligen postat av svenbanan Visa inlägg
Det ser ut som att du skapar ett hundobjekt i din inputloop

PHP-kod:
case 0:                   //lägg till hund metod
   
Hund nyHund = new Hund();       //*** DET HÄR CASET GER ERROR 
   
nyHund adderaHund();
   
hundDagis[0] = nyHund;    //Det här overwritar [0] hela tiden?
   
break; 
Sedan skapar du ett nytt hundobjekt i din funktion och försöker returnera detta objekt till det objekt du skapade i huvudloopen.

PHP-kod:
public static Hund adderaHund() {    
   
Hund nyhund = new Hund();
...
...
   return 
nyhund;

I mina ögon ser detta konstigt ut.

Om du har en funktion som ska modifiera hundId och hundNamn så borde denna funktion vara en metod i klassen Hund. Dvs du anropar den genom nyHund.adderaHund();

I denna metod skapar du då inte ett nytt hundobjet utan du modifierar this.hundId och this.hundNamn.

Men det var länga sedan jag kodade nåt i Java. Så jag kanske blandat ihop syntaxen, och jag kanske inte heller minns rätt angående hur saker och ting returneras.
Det här låter väldigt logiskt, är lite nytt med klasser/objekt så ska prova lite! Ett sådant här fel kan alltså påverka fortsättningen av do/while loopen?

Tusen tack för svar !

Senast redigerad av Wequ den 2019-06-28 klockan 22:57.
Wequ är inte uppkopplad   Svara med citat
Gammal 2019-06-29, 01:04   #2155
svenbanan
Banned User
 
Reg.datum: Jan 2012
Inlägg: 10 099
hundDagis[0] = nyHund;

Ovanstående kommer definitivt inte funka. Om det är det som får ditt program att krasha vet jag inte. Men du kommer som du själv insett, försöka lägga till din nya hund till samma index i arrayen och skriva över.

Det finns andra lite smidigare alternativ där du kan enkelt använda push() och pop() som jag tror inte funkar med vanliga arrayer i Java eftersom de har en bestämd storlek från initilaseringen. Med hundDagis.push(nyHund); stoppar du alltså in ditt objekt längst bak i din array (jag tror dock du måste använda ArrayList eller ListArray eller nåt sånt för att kunna använda detta). På motsvarande sätt returnerar hundDagis.pop(); det sista elementet ur arrayen (och tar bort det ur arrayen).

Ifall du absolut vill använda vanliga arrayer så måste du ha någon typ av räknare som håller reda på hur många element arrayen innehåller. När du ska lägga till ett nytt element så lägger du till det elementet på den positionen som den räknaren pekar på, och sedan inkrementerer du räknaren med ett.

Från början innehåller ju arrayen 0 element, så då lägger du till det första elementet på position 0 och räknaren ökas med 1. Nästa gång du lägger till ett element är det alltså på plats 1 och räknaren ökas till 2 etc... Kom ihåg att deklarera och initialisera den räknarvariabeln innan loopen.

Men utöver det där med arrayen så tror jag att det hundobjekt du får returnerat från din funktion nog är NULL.

Du kan ju testa att göra en testutskrift direkt efter denna kodrad:

nyHund = adderaHund();

Dvs försök plocka ut nyHund.hundId och skriv ut. Jag tror ditt hundobjet är NULL och att det inte kommer funka.
svenbanan är inte uppkopplad   Svara med citat
Gammal 2019-06-29, 15:17   #2156
Wequ
Registered User
 
Reg.datum: Jul 2010
Inlägg: 77
Tack för hjälpen, fick ordning på det genom att att ta till dina tips, och även att placera arrayen hundDagis och scannern direkt i classen istället för i main metoden, så nu kommer alla metoder åt arrayen och det används bara en scanner i programet, de blev strul när jag öppnade och stängde fler scannrar. Hund objektet uppdateras som den ska i hund klassen med metod hundInfo

Kod:
public class Dagis {
	
	static Hund[] hundDagis = new Hund[20]; //Array som innehåller objekt av Hund classen.   Placeras i klass så alla metoder kommer åt
	static Scanner input = new Scanner(System.in);           //Använder en scanner i hela programmet.
	
	public static void main(String args[]) {
				    		    		    			   
			boolean exit = false;
Men har det där logiska problemet med att addera hundar till nästa element arrayen. Min adderaHund metod ser ut såhär just nu:

Kod:
public static void adderaHund() {    // Metod som lägger till hundar till arrayen hundDagis
		
		Hund nyhund = new Hund();				
		input.nextLine();
		System.out.print("Skriv in hundid: ");
		String hundId = input.nextLine();
				
		System.out.print("Skriv in namn på hunden: ");
		String hundNamn = input.nextLine();
	
		nyhund.hundInfo(hundId, hundNamn);               //Anropar metod hundInfo och uppdaterar den med informationen som kommer in i adderaHund metoden.			
		hundDagis[0] = nyhund;              //Lägger till objekt hund till array, Måste ha en loop av något slag här<---
		System.out.print("\n"+"Hunden är tillagd!");		
					
	}
Hund objektet uppdateras som den ska i hund klassen med metod hundInfo

En sån här loop nedan kommer ju inte funka, Utan jag måste ha en counter utanför for loopen som ökar med 1 varje gång metoden anropas Tex: en "int a = 0" som deklareras i början av metoden, sedan "hundDagis[a] = nyhund" och sist typ a++, men nästa gång metoden anropas kommer ju "int a= 0" köras och jag är tillbaka på värdet 0 på a? Hur ska man skriva det här ens ? Placerar man det i switch satsen case 0 så kommer ju samma sak hända varje gång man går in i case 0. Vore ju enklare o bara använda en lista eller arraylist av något slag, men hur gör man ens i en vanlig array?
Kod:
for(int i = 0; i< hundDagis.length; i++) {
			hundDagis[i] = nyhund;
		}
Wequ är inte uppkopplad   Svara med citat
Gammal 2019-06-29, 15:55   #2157
svenbanan
Banned User
 
Reg.datum: Jan 2012
Inlägg: 10 099
Du vill förmodligen snarare kunna göra nåt sånt här:

Dagis d = new Dagis();
d.adderaHund();

Dvs adderaHund() är en metod som du definierar i klassen Dagis.
I den metoden har du tillgång till arrayen för hundar genom det aktuella dagis-objektet.
Dvs nåt liknande detta:

this.hundDagis[0] = new Hund();

Lägg till en variabel för att hålla ordning på hur många hundar du lagt till i din array i Dagis klassen.

int antalHundar = 0;

När du kör den där adderaHund() metoden så gör du nåt liknande detta:

this.hundDagis[this.antalHundar] = new Hund();
this.antalHundar++;

Du får dock se till att du inte försöker lägga till fler element till arrayen än vad den har minne allokerat. I ditt fall kan du inte ha mer än 20 element i arrayen. Försöker du lägga in nåt på index 30 så kommer du skriva till en minnesadress som kan få sitt innehåll ändrat utan din vetskap. Dvs du kommer få problem.

Men jag skulle som sagt rekomendera att du försöker använda nåt annat än vanliga simpla arrayer. Försök kolla på ArrayList. Jag tror inte du behöver allokera minne vid kompilering för sådana. Och längden på en sådan "array" är antalet element du faktiskt stoppat in (och inte den allokerade storleken).
svenbanan är inte uppkopplad   Svara med citat
Gammal 2019-11-06, 19:38   #2158
xan
Registered User
 
xans avatar
 
Reg.datum: Feb 2017
Inlägg: 894
Är alla jobb inom IT för folk som vill sitta vid en skärm 40h/v eller finns det inriktningar som kombinerar IT med arbetsuppgifter som är mer sociala? När jag tänker på branchen tänker jag på stereotypiska geeks som sitter och knappar hela dagarna, men jag vet inte om det stämmer överens med verkligheten. En vän som pluggar Systemvetenskap säger att det är lite mer varierat jämfört med andra IT-utbildningar?
xan är inte uppkopplad   Svara med citat
Gammal 2019-11-06, 20:46   #2159
Brofessorn
Registered User
 
Brofessorns avatar
 
Reg.datum: May 2015
Inlägg: 1 602
Systemvetenskap är nog ganska mjukt jämfört med andra IT-yrken. Standardbeskrivningen är väl att de ska agera som mellanhand mellan kunder och utvecklar-geeksen.
Brofessorn är inte uppkopplad   Svara med citat
Gammal 2019-11-06, 21:34   #2160
C.E.J.
Korsordet
 
C.E.J.s avatar
 
Reg.datum: Oct 2007
Ort: Malmö
Inlägg: 5 410
Systemvetenskap är väldigt inriktat på ux, att webbmys är tillgängligt för blinda och döva, ladida, så det är nog säkert mer "varierat" ja. TeamViewer sessioner med kommuntanter, yes?
__________________
"Det är verkligen inte lite omskolning det handlar om" http://www.kolozzeum.com/kolozzeum/s...&postcount=285
C.E.J. är inte uppkopplad   Svara med citat


Svara


Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +1. Klockan är nu 10:54.


Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
Copyright 2015, Kolozzeum (TM)