8 svar
85 visningar
Maddessoriano 4
Postad: 13 feb 06:47 Redigerad: 13 feb 06:48

Java/ netbeans läxa uppgift

Hej!

  pluggar på distans och har fått min första läxuppgift. Min lärare skickade tillbaka läxan och sa inte direkt vad var fel utan att jag skulle läsa om kapitel 1-3. 
så undrar om någon kan hjälpa mig förstå vad jag gör fel..

Han menar då det är fel på upplägget(kodstandard?) alltså struktur på koder, namnsättning, mellanslag osv …

 

 

package inlamningsuppgift01;
//madeleine B
//2024-02-03
import java.util.Scanner;
public class Inlamningsuppgift01 {

 public static void main(String[] args) {
 Scanner input = new Scanner( System.in );

 System.out.print("Skriv namn: " );
 String namn = input.nextLine();

 int mellanslag = namn.indexOf( ' ' );
 String förnamn = namn.substring(0, mellanslag );
 String efternamn = namn.substring(  mellanslag+1, namn.length() );

 System.out.println( "Förnamn: " + förnamn );
 System.out.println( "Efternamn: " + efternamn );

//nästa uppgift, medelvärde.

 System.out.print("Ange heltal 1: ");
 int Tal1= input.nextInt();

 System.out.print("Ange heltal 2: ");
 int Tal2 = input.nextInt();

 System.out.print("Angen heltal 3: ");
 int Tal3 = input.nextInt();

 int summa = Tal1 + Tal2 + Tal3;
 double medel = summa /3.0;

 System.out.println("Medelvärdet: " + medel );

 

}

}

CurtJ Online 1160
Postad: 13 feb 08:35

Hej och välkommen till Pluggakuten. 

Det är lite svårt att avgöra vad din lärare anser men du kan göra två saker för att förenkla för oss

Lägg in koden med "Infoga programmeringskod"-verktyget så ser vi på saker som indentering t ex 

Det andra är att vi inte har den ursprungliga uppgiften så lägg in den också. 

Om jag tittar på din kod så är det två saker som slår mig. För variabelnamn brukar man använda "camel case", dvs inleda med liten bokstav och sen stor bokstav för varje ny orddel. Man skulle t ex kunna skriva tal1 och förNamn. Jag personligen skulle inte använda svenska variabelnamn och definitivt inte svenska tecken. Det är möjligt att det fungerar med den kompilatorn du har men historiskt sett har det inte varit så. 

Du har gjort allt arbete i din main-metod och möjligen skulle man strukturera koden lite så att de olika uppgifterna läggs i separata metoder eller t o m klasser. 

Sen kan man generellt säga att om koden fungerar (har du testat) så är den korrekt. Men det gäller kanske inte ur din lärares perspektiv :) 

Återkom gärna med kod och uppgift så kanske vi kan komma på något annat. 

Laguna Online 28725
Postad: 13 feb 08:47

Är boken tillgänglig gratis? Jag skulle vilja läsa kapitel 1-3.

Maddessoriano 4
Postad: 13 feb 09:06
package inlamningsuppgift01;
//madeleine soriano
//2024-02-03
import java.util.Scanner;
public class Inlamningsuppgift01 {

 public static void main(String[] args) {
  Scanner input = new Scanner( System.in );
  
  System.out.print("Skriv namn: " );
  String namn = input.nextLine();
        
  int mellanslag = namn.indexOf( ' ' );
  String förnamn = namn.substring(0, mellanslag );
  String efternamn = namn.substring( mellanslag+1, namn.length() );
        
  System.out.println( "Förnamn: " + förnamn );
  System.out.println( "Efternamn: " + efternamn );
       
//nästa uppgift, medelvärde.
  
  System.out.print("Ange heltal 1: ");
  int Tal1= input.nextInt();

  System.out.print("Ange heltal 2: ");
  int Tal2 = input.nextInt();

  System.out.print("Angen heltal 3: ");
  int Tal3 = input.nextInt();

  int summa = Tal1 + Tal2 + Tal3;
  double medel = summa /3.0;

  System.out.println("Medelvärdet: " + medel );

         

    }
    
}
Maddessoriano 4
Postad: 13 feb 09:08 Redigerad: 13 feb 09:17
Maddessoriano skrev:

uppgiften är detta :

krav på programmets funktioner

Programmet skall göra två olika saker:


Del 1: Behandla namn

Programmet skall fråga användaren efter namnet (förnamn + efternamn).

Därefter skall programmet skriva ut förnamnet och sedan efternamnet på varsin rad.


Del 2: Beräkna medelvärde

Programmet skall beräkna medelvärdet av tre tal


Se Exempel på programkörning för hur användardialogen skall se ut.


Krav på programkoden

Programmet skall fråga användaren efter namnet (förnamn + efternamn).

Hela namnet läses in i en variabel.

Sedan skall variabelns innehåll delas upp i två nya variabler, en för förnamnet och en för efternamnet.

Därefter skall programmet skriva ut förnamnet och sedan efternamnet på varsin rad.


Del 2: Beräkna medelvärde

Skapa ett fält för tre heltalsvärden.

Programmet skall fråga efter tal 1 och sedan läsa in det i fältet.

Programmet skall fråga efter tal 2 och sedan läsa in det i fältet.

Programmet skall fråga efter tal 3 och sedan läsa in det i fältet.

Sedan skall medelvärdet beräknas för de tre talen i fältet och skrivas ut.


Programkoden skall vara uppdelad i två delar enligt ovan med hjälp av kommentarer.


Kontrollera att programmet uppfyller kodstandard 1-7.

 

Svaret/rättningen jag fick är detta:

1 Fortfarande inte följt kodstandarden. Se v 3 i kursplanen.
2 Inte använt fält i del2.
Justera

package inlamningsuppgift01;
//madeleine soriano
//2024-02-03
import java.util.Scanner;
public class Inlamningsuppgift01 {

 public static void main(String[] args) {
  Scanner input = new Scanner( System.in );
  
  System.out.print("Skriv namn: " );
  String namn = input.nextLine();
        
  int mellanslag = namn.indexOf( ' ' );
  String förnamn = namn.substring(0, mellanslag );
  String efternamn = namn.substring( mellanslag+1, namn.length() );
        
  System.out.println( "Förnamn: " + förnamn );
  System.out.println( "Efternamn: " + efternamn );
       
//nästa uppgift, medelvärde.
  
  System.out.print("Ange heltal 1: ");
  int Tal1= input.nextInt();

  System.out.print("Ange heltal 2: ");
  int Tal2 = input.nextInt();

  System.out.print("Angen heltal 3: ");
  int Tal3 = input.nextInt();

  int summa = Tal1 + Tal2 + Tal3;
  double medel = summa /3.0;

  System.out.println("Medelvärdet: " + medel );

         

    }
    
}
Maddessoriano 4
Postad: 13 feb 09:09
Laguna skrev:

Är boken tillgänglig gratis? Jag skulle vilja läsa kapitel 1-3.

Boken heter Programmering 1 Java, inte gratis :)

CurtJ Online 1160
Postad: 13 feb 09:44

Indenteringen är inte helt jyst. Första nivån är bra (public class ...) men sen ska nästa nivå (public static .. ) linjera med den andra måsvingen som hör till den raden. Sen ska allt i mainmetoden vara på samma indenteringsnivå. Jag brukar välja 4 blankstegs indentering men det är en smaksak. 

Det står i uppgiften att du ska dela in det i två delar och det kan väl vara som du skrivit men du ska också kommentera de två delarna för sig. Titta på blockkommentarer. (/* */

Tal1  - Tal3 är variabler. Jag tror att din lärare vill ha en vektor med tre element (array på engelska) 

Ex: 

int[] tal = new int[3]

Sen när du läser in gör du det i en loop 

for (int i = 0; i< 3 ; i++) { läs in och tilldela tal[i] }

Sen loopar du igenom array'en och summerar för att beräkna medelvärdet. 

Prova och återkom med resultatet så kan vi hjälpa dig vidare om det behövs. 

Laguna Online 28725
Postad: 13 feb 10:17

Jag tycker koden ser mycket bra ut för att vara första uppgiften. Om det finns uttryckliga regler för namngivning och indentering får du förstås följa dem.

Om det var min kod skulle jag putsa till den på några ställen.

CurtJ Online 1160
Postad: 13 feb 11:01

Vi ska inte lösa uppgiften åt dig men du har kommit så långt så det är ju bara detaljer kvar så jag ger dig mitt förslag så kan du se vad vi menar

Visa spoiler
package inlamningsuppgift01;
//madeleine soriano
//2024-02-03
import java.util.Scanner;
public class Inlamningsuppgift01 {

	public static void main(String[] args) {
		/*
		 * Scannerobjektet måste stängas när det är använt. 
		 * Görs längst ner.
		 */
		Scanner input = new Scanner( System.in );

		// Första uppgift, hantera namn 
		
		System.out.print("Skriv namn: " );
		String namn = input.nextLine();

		int mellanslag = namn.indexOf( ' ' );
		String förnamn = namn.substring(0, mellanslag );
		String efternamn = namn.substring( mellanslag+1, namn.length() );

		System.out.println( "Förnamn: " + förnamn );
		System.out.println( "Efternamn: " + efternamn );

		/*
		 * Du kan också använda String.split och då skulle det se ut så här
		 * 
		 * String[] namndel = namn.split(" "); 
		 * System.out.println("Förnamn: " + namndel[0] );
		 * System.out.println( "Efternamn: " + namndel[1] );
		 * 
		 * Men ditt sätt går precis lika bra. 
		 */
		
		//nästa uppgift, medelvärde.
		
		int[] tal = new int[3];
		int summa = 0; 
		
		for (int i = 0; i <3; i++) {
			System.out.print("Ange heltal "+i+": ");
			tal[i] = input.nextInt();	
			
			// Lägg till i summan
			summa += tal[i];
		}

		System.out.println("Medelvärdet: " +  summa /3.0 );

		input.close();
		
	}

}
Svara Avbryt
Close