hjälp med programmerings uppgift !

Permalänk

hjälp med programmerings uppgift !

Hej
har en programmerings uppgift som är:
Skriv ett program som läser in ett, från början okänt, antal heltal och därefter skriver
ut om det inmatade talet är jämnt eller udda. Programmet ska avslutas om användaren
matar in en nolla som heltal.
jag har kommit fram enbit men till slut så stämer det inte,, jag får rätt när jag matar in talet från 0-9 som ger rätt om det talet är udda eller jämnt men om jag matar in från 10 så får jag udda tal upp till tal 20 som där får jag jämn... kan nån hjälpamig med detta.. det här har jag kommit fram till:

import java.util.*;
public class HelloWorld {
public static void main(String[] args) {

String tal;
char gender_char = 0;
int gender_digit = 0;

Scanner input = new Scanner(System.in);

System.out.print("Skriv in talet: ");
tal = input.nextLine();

gender_char = tal.charAt(0);
gender_digit = gender_char - '0';

if (gender_digit % 2 == 0) {
System.out.println("Talet är jämnt");
} else {
System.out.println("Talet är udda");
}
}
}

Permalänk
Medlem

Utan att vara en expert på java ser jag rätt så snabbt att du bara tar första talet som matas in för att jämföras, ifall du matar in 2416 så kommer du att bara kolla ifall 2 är jämnt eller udda.
Så istället för att bara ta det första talet så ska du ta hela sträng och parsa den.
Parse analyserar en string och "letar" upp en int och sätter den till en variabel likt:

String s = input.nextLine(); int n = Integer.parseInt(s);

Hoppas detta hjälper lite.
Och glöm inte att sätta dina kod exempel inom CODE taggar

Permalänk
Medlem
Skrivet av forza_inter17:

Hej

tal = input.nextLine();

gender_char = tal.charAt(0);
gender_digit = gender_char - '0';

}

Kika på Integer.parseInt(String tal)
kastar Runtime-Exceptionen NumberFormatException om den inte kan parse:a, dvs, skrik högt ang att det är ett tal man måste mata in.

EDIT: nån hann visst före, men men...

Visa signatur

Dator - Maskinfan du arbetar med
Data - Ettor och nollor lagrade på t.ex hårddisken
Hur svårt kan det vara? :p

Permalänk
Medlem

Varför göra det jobbigt när det finns fina färdiga parsers.
Integer.parserInt

EDIT: Var redan nån som skrivit sry..

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Skrivet av EuQ:

Utan att vara en expert på java ser jag rätt så snabbt att du bara tar första talet som matas in för att jämföras, ifall du matar in 2416 så kommer du att bara kolla ifall 2 är jämnt eller udda.
Så istället för att bara ta det första talet så ska du ta hela sträng och parsa den.
Parse analyserar en string och "letar" upp en int och sätter den till en variabel likt:

String s = input.nextLine(); int n = Integer.parseInt(s);

Hoppas detta hjälper lite.
Och glöm inte att sätta dina kod exempel inom CODE taggar

okej men vart ska jag ha den koden asså ist för (char) ?

Permalänk
Medlem
Skrivet av forza_inter17:

import java.util.*; public class HelloWorld { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Skriv in talet: "); String s = input.nextLine(); int n = Integer.parseInt(s); if (n % 2 == 0) { System.out.println("Talet är jämnt"); } else { System.out.println("Talet är udda"); } } }

Så där ungefär

Permalänk
Skrivet av EuQ:

Så där ungefär

TACK nu funkar den bra,,tack igen för hjälpen

Permalänk
Skrivet av forza_inter17:

Hej
har en programmerings uppgift som är:
Skriv ett program som läser in ett, från början okänt, antal heltal och därefter skriver
ut om det inmatade talet är jämnt eller udda. Programmet ska avslutas om användaren
matar in en nolla som heltal.
jag har kommit fram enbit men till slut så stämer det inte,, jag får rätt när jag matar in talet från 0-9 som ger rätt om det talet är udda eller jämnt men om jag matar in från 10 så får jag udda tal upp till tal 20 som där får jag jämn... kan nån hjälpamig med detta.. det här har jag kommit fram till:

import java.util.*; public class HelloWorld { public static void main(String[] args) { int tal; Scanner input = new Scanner(System.in); System.out.print("Skriv in talet: "); try{ tal = input.nextInt(); if (tal % 2 == 0) { System.out.println("Talet är jämnt"); } else { System.out.println("Talet är udda"); } } catch(InputMismatchException){ System.out.println("Det där var inget tal"); } }

kan ha glömt någon import, men ungefär så kan man göra också.

Visa signatur

Corsair Vengeance LPX 4x8GB DDR4 2666MHz CL16 | Intel Core i7 6700 3,4 GHz 8MB | MSI Z170A KRAIT GAMING | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Samsung Writemaster | Corsair TX750 V2 750 W | EVGA GeForce GTX 970 4GB SSC ACX 2.0+| Fractal Design Define R5 (Svart)

Permalänk
Skrivet av gaminggirl:

import java.util.*; public class HelloWorld { public static void main(String[] args) { int tal; Scanner input = new Scanner(System.in); System.out.print("Skriv in talet: "); try{ tal = input.nextInt(); if (tal % 2 == 0) { System.out.println("Talet är jämnt"); } else { System.out.println("Talet är udda"); } } catch(InputMismatchException){ System.out.println("Det där var inget tal"); } }

kan ha glömt någon import, men ungefär så kan man göra också.

Har sista biten kvar som är: Programmet ska avslutas om användaren
matar in en nolla som heltal. vart ska jag lägga denna kod

do { System.out.print("Mata in ett tal (avsluta med 0): "); number = input.nextInt(); } while (number != 0);

för programmet ska avslutas när man matar en en nolla ??

Permalänk
Medlem

Allt som är innaför while taggarna kommer upprepas, så det borde vara nåt sånt här du vill ha det.

import java.util.*; public class HelloWorld { public static void main(String[] args) { int tal = -1; Scanner input = new Scanner(System.in); do{ System.out.print("Mata in ett tal (avsluta med 0): "); try{ tal = input.nextInt(); if (tal % 2 == 0) { System.out.println("Talet är jämnt"); } else { System.out.println("Talet är udda"); } } catch(InputMismatchException){ System.out.println("Det där var inget tal"); } }while( tal != 0 ); }

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Skrivet av forza_inter17:

Har sista biten kvar som är: Programmet ska avslutas om användaren
matar in en nolla som heltal. vart ska jag lägga denna kod

do { System.out.print("Mata in ett tal (avsluta med 0): "); number = input.nextInt(); } while (number != 0);

för programmet ska avslutas när man matar en en nolla ??

Du får sätta den så att allt det du vill ska göras varje varv finns inuti din do, så lägg do precis före Mata in ett tal i din kod och while precis efter den sista saken du vill ska upprepas varje gång ett tal matats in. Om du inte vill testa om 0 är udda eller jämt så får du läsa in ett atl ocg sedan göra en vanlig while utan do i stället. Då läser du in nästa tal som sista sak du gör i while-satsen.

Visa signatur

Corsair Vengeance LPX 4x8GB DDR4 2666MHz CL16 | Intel Core i7 6700 3,4 GHz 8MB | MSI Z170A KRAIT GAMING | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Samsung Writemaster | Corsair TX750 V2 750 W | EVGA GeForce GTX 970 4GB SSC ACX 2.0+| Fractal Design Define R5 (Svart)