Jednoduchá kalkulačka-JAVA – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jednoduchá kalkulačka-JAVA – Java – Fórum – Programujte.comJednoduchá kalkulačka-JAVA – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
suchla120
Duch
30. 10. 2012   #1
-
0
-

Zdravím, mám za úkol vytvořit jednoduchou kalkulačku. Zatím mám tohle:

import java.util.*;


public class kalkulacka {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int prvniCislo = vstupCisla();
		char znak = vstupZnaku();
		int druheCislo = vstupCisla();
	
		
		if (znak == '+')
		{
		int vysledek = ((prvniCislo) + (druheCislo));
		
		System.out.println(prvniCislo +" + "+ druheCislo +" = "+ vysledek);
		}
		
		else {
			int vysledek = ((prvniCislo) - (druheCislo));
			
			System.out.println(prvniCislo +" - "+ druheCislo +" = "+ vysledek);
		}
		
		
	
	}

	
	public static int vstupCisla(){
		
		
		System.out.println("Zadej operand: ");
		Scanner sc = new Scanner(System.in);
		int cislo = sc.nextInt();
		
		sc.close();
		
		
		return cislo;
		
		
		
	
	}
	
	public static char vstupZnaku(){
		
		System.out.println("Zadej znak + nebo -: ");
		Scanner sc = new Scanner(System.in);

		char znak = sc.nextLine().charAt(0);
		
		sc.close();
		
	return znak;
		
		
		
		
		
		
	}
	
}

Po zapnutí mě to nechá zadat první číslo a pak vyskočí error

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at kalkulacka.vstupZnaku(Ppa1_cv05_4_A12B0171P.java:57)
at kalkulacka.main(Ppa1_cv05_4_A12B0171P.java:13)

vím, že je chyba nekde v ty metodě vstupZnaku, asi při čtení scannerem....poradíte mi? diky

Nahlásit jako SPAM
IP: 147.228.209.–
Martin
~ Anonymní uživatel
1602 příspěvků
30. 10. 2012   #2
-
0
-

Pracuješ špatně se Scannerem, nech si zadat od uživatele vše najednou (oba operandy a znak) a postupně to ze Scanneru dostaň, pozor na to, čím budeš operandy oddělovat, nebo spíš nejdřív získej int, jako první číslo, pak další char, jako znak, ale nezaměnit třeba s mezerou, a další int jako číslo, pak s tím můžeš pracovat. Snad Ti to pomůže :)

Nahlásit jako SPAM
IP: 88.100.162.–
suchla120
Duch
30. 10. 2012   #3
-
0
-

#2 Martin
no takhle to asi udelat nemuzu, mame presne zadany, ze tam maj bejt tyhle 2 metody...nejde proste nejak precist scannerem char a podle nej pak provest tu operaci jak to mam ja?

Nahlásit jako SPAM
IP: 147.228.209.–
cibule0
Návštěvník
30. 10. 2012   #4
-
0
-

#3 suchla12
Myslím si že problém je v entru když potvrzuješ zadani čísla skus za sc.nextInt() dat sc.nextline()

Nahlásit jako SPAM
IP: 85.70.207.–
suchla120
Duch
30. 10. 2012   #5
-
0
-

#4 cibule
takže jsem dal

public static int vstupCisla(){
		
		
		System.out.println("Zadej operand: ");
		Scanner sc = new Scanner(System.in);
		int cislo = sc.nextLine();
		
		sc.close();
		
		
		return cislo;
		
	
	}

a to se mi program ani nespusti, napíše:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from String to int

at kalkulacka.vstupCisla(kalkulacka.java:41)
at kalkulacka.main(kalkulacka.java:13)

Nahlásit jako SPAM
IP: 147.228.209.–
Řešení
Buco0
Newbie
30. 10. 2012   #6
-
0
-
Vyřešeno Nejlepší odpověď

Treba pouzit wrapper class. Pozor na konvenciu, nazov triedy je vzdy s velkym pismenom!

import java.util.*;


public class Kalkulacka {
	static Scanner sc = new Scanner(System.in);

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		int prvniCislo = vstupCisla();
		char znak = vstupZnaku();
		int druheCislo = vstupCisla();	
		
		if (znak == '+')		{
			int vysledek = ((prvniCislo) + (druheCislo));		
			System.out.println(prvniCislo +" + "+ druheCislo +" = "+ vysledek);
		}
		
		else {
			int vysledek = ((prvniCislo) - (druheCislo));			
			System.out.println(prvniCislo +" - "+ druheCislo +" = "+ vysledek);
		}	
	}

	public static int vstupCisla(){				
		System.out.println("Zadej operand: ");		
		String tmp = new String(sc.nextLine());
		Integer cislo = new Integer (String.valueOf(tmp));		
		return cislo;
	}
	
	public static char vstupZnaku(){		
		System.out.println("Zadej znak + nebo -: ");
		char znak = sc.nextLine().charAt(0);			
		return znak;		
	}	
}
Nahlásit jako SPAM
IP: 195.178.73.–
cibule0
Návštěvník
31. 10. 2012   #7
-
0
-

#5 suchla12
myslel jsem takhle

System.out.println("Zadej operand: ");
  Scanner sc = new Scanner(System.in);
  int cislo = sc.nextInt();
 sc.nextLine();
  sc.close();
 
 
  return cislo;

Nahlásit jako SPAM
IP: 85.70.207.–
suchla120
Duch
31. 10. 2012   #8
-
0
-

#7 cibule
to taky nejde, metoda char nemuze vracet Integer.

Buco...taky nejde, píše to

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
sc cannot be resolved

Nahlásit jako SPAM
IP: 147.228.209.–
Buco0
Newbie
31. 10. 2012   #9
-
0
-
Nahlásit jako SPAM
IP: 195.178.73.–
suchla120
Duch
31. 10. 2012   #10
-
0
-

ne, ja jsem to jenom doplnoval, tamtoho jsem si nevšiml, už to funguje, mockrat díky

Nahlásit jako SPAM
IP: 147.228.209.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Jednoducha kalkulacka — založil Anonymní uživatel

Jednoduchá grafika — založil Grungy

Jednoduchá práce v C — založil Marek

Jednoducha grafika — založil patee

Jednoduchá střílečka — založil mbeloch97

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý