NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Pomoc pri hľadaní chyby

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Miša Šebová:9.10.2016 20:59

Ahojte robím si do školy jednoduchý program na výpočet lin.rovnice, môžete mi poradiť prečo mi vypisuje error, prípadne čo by šlo urobiť jednoduchšie ?

package (blablabla..:D)
import java.util.Scanner;
public class Ppa1_cv04_1_A­16B0052K {
public static void main(String[] args) {
Scanner sc = new Scanner (System.in, "Windows-1250");
System.out.prin­tln("Zadej cislo a:");
int a = sc.nextInt();
System.out.prin­tln("Zadej cislo b:");
int b = sc.nextInt();
int x ;
x = (0 - b)/ a;
System.out.prin­tln("---Vysledky---");
System.out.prin­tln("Rovnice:" + a + " * x + " + b + " = 0");
if ((a==0) && (b==0)) {
System.out.prin­tln("ma nekonecne reseni");
}
if ((a==0) && (b != 0)){
System.out.prin­tln("nema reseni v R");
}
if ((a!=0) && (b != 0)){
System.out.println ("ma reseni x = " + x);
}

}

Editováno 9.10.2016 20:59
 
Odpovědět
9.10.2016 20:59
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:9.10.2016 21:24

chybí ti na konci jedna závorka... v jave nedělám, ale zkus to krokovat... jinak neměl bys tam mít kontrolu, aby to včas odchytilo "a" které by bylo nulou,abys jí nedělil?

Nahoru Odpovědět
9.10.2016 21:24
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na David Hynek
Miša Šebová:9.10.2016 21:27

Zatvorku som len zabudla skopirovat :D
Int x som dala do poslednej if metody, takze tie prve dve if mi spocita dobre.
Aspon nieco, ale zas teraz som si vsimla ze v zadani ma vyjst vysledok ako desatinne cislo a vobec mi to nepocita ked su cisla liche. :D nejaka rada ? (int x som zmenila na double x)

blablabla
public static void main(String[] args) {
Scanner sc = new Scanner (System.in, "Windows-1250");
System.out.prin­tln("Zadej cislo a:");
int a = sc.nextInt();
System.out.prin­tln("Zadej cislo b:");
int b = sc.nextInt();

System.out.prin­tln("---Vysledky---");
System.out.prin­tln("Rovnice: " + a + " * x + " + b + " = 0");
if ((a==0) && (b==0)) {
System.out.prin­tln("ma nekonecne reseni");
}
if ((a==0) && (b != 0)){
System.out.prin­tln("nema reseni v R");
}
if (a != 0){
double x ;
x = (0 - (b))/a;
System.out.println ("ma reseni x = " + x);
}

}

}
to b-cko na konci som dala do zatvorky, ci to nahodou nepojde, ale nejde :D

Editováno 9.10.2016 21:29
 
Nahoru Odpovědět
9.10.2016 21:27
Avatar
Petr Šťastný
Tvůrce
Avatar
Odpovídá na Miša Šebová
Petr Šťastný:9.10.2016 21:31

Na to se nejde dívat. Dávej kód prosím do té značky </>, hned vedle smajlíků. Pak je to čitelný. :-)

public static void main(String[] args) {
Scanner sc = new Scanner (System.in, "Windows-1250");
System.out.println("Zadej cislo a:");
int a = sc.nextInt();
System.out.println("Zadej cislo b:");
int b = sc.nextInt();

System.out.println("---Vysledky---");
System.out.println("Rovnice: " + a + " * x + " + b + " = 0");
if ((a==0) && (b==0)) {
System.out.println("ma nekonecne reseni");
}
if ((a==0) && (b != 0)){
System.out.println("nema reseni v R");
}
if (a != 0){
double x ;
x = (0 - (b))/a;
System.out.println ("ma reseni x = " + x);
}

}

}
Editováno 9.10.2016 21:32
 
Nahoru Odpovědět
9.10.2016 21:31
Avatar
Miša Šebová:9.10.2016 21:33

Dakujem :) este som kod takto nevkladala, ale uz sa to nestane, tiez sa mi to zda neprehladne :)

 
Nahoru Odpovědět
9.10.2016 21:33
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:9.10.2016 21:41
  1. když postuješ kód, formátuj ho přes tady ty špičaté závorky nebo zmačkni ctrl+k
  2. ticket v podobě "vypisuje error" je tak trošku nejednoznačný - příště piš přímo celý název exceptiony, kterou ti to háže. Takhle si můžeme myslet, že je chyba v tom, že ti v ledničce došlo mlíko-.-
  3. je to tou závorkou a jménem. Nevím, kdes přišel k tak debilnímu jménu třídy - jestli někdo z ní pozná, že se jedná o nějakou funkci, tak je frajer

Takže takhle vypadá ten tvůj kód, který "funguje":

import java.util.Scanner;

public class Function {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in, "Windows-1250");
        System.out.println("Zadej cislo a:");
        int a = sc.nextInt();
        System.out.println("Zadej cislo b:");
        int b = sc.nextInt();
        int x;
        x = (0 - b) / a;
        System.out.println("---Vysledky---");
        System.out.println("Rovnice:" + a + " * x + " + b + " = 0");
        if ((a == 0) && (b == 0)) {
            System.out.println("ma nekonecne reseni");
        }
        if ((a == 0) && (b != 0)) {
            System.out.println("nema reseni v R");
        }
        if ((a != 0) && (b != 0)) {
            System.out.println("ma reseni x = " + x);
        }
    }
}

A teď připomínky k řešení:

  1. problém ti nastal naprosto ze zřejmé věci - piš čitelněji kód, dodržuj konvence a když nějakou hlavičkou něco otevřeš, tak uzavírací závorku piš na té úrovni toho řádku, kde začínala hlavička - tuhle chybu bys hned uviděl
  2. srozumitelnější název. Název: "Ppa1_cv04_1_­A16B0052K" je slušně řečeko hovadina. Připomíná to trošku hash, ale ten už by jako název neměl být vůbec. Takže tohle zlepši
  3. nejde rozeznat, co je a a co b (jestli to jsou parametry rovnice y a x nebo k a q... případně u obecné rovnice indexi - ax(na druhou) + bx + c = 0)

Prostě a stručně - lépe identifikuj a klidně i pro zadávání popisuj, co vlastně má ten dotyčný doplnit. Jinak na začátečnícký projekt by to šlo a není důvod to přepisovat do něčeho složitějšího, to uděláš časem sám:)

PS: neber tyto poučky ve zlém - radím ti, co je blbě a co fixnout;)

Nahoru Odpovědět
9.10.2016 21:41
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na Lubor Pešek
Lubor Pešek:9.10.2016 21:44

jinak ještě se na to dívám a třeba by se dalo vytknout, že na jednom řádku deklaruješ lokálně x a hned na druhém jej inicializuješ. Nebo ta závorka (0-b).... nechci být pedant, ale nejsou v takovém případě všechna b záporná? pak stačí napsat rovnou (-b). Ale tak to jsou už jen kosmetické úpravy:) jen tak mimochodem

Nahoru Odpovědět
9.10.2016 21:44
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Odpovídá na Lubor Pešek
Miša Šebová:9.10.2016 21:50

Jo to bude ono :D :D uz je vela hodin a moc mi to nemysli :D idem to skusit opravit. Lebo mi to nejak blbo pocitalo a nevedela som prist na to preco..Inak mi to uz sppusta v pohode, ziadne errory.

+ten nazov suboru bohuzial neovplyvnim kedze je potrebne ho zadat kvoli validaci na skolskom webe..ja by som to nevymyslela :D :D

A v zlom to neberiem, ja som vdacna za kazdu radu :D

 
Nahoru Odpovědět
9.10.2016 21:50
Avatar
Miša Šebová:9.10.2016 21:59

Takže už to funguje všetko ako má. :)

finálna verzia :D :

import java.util.Scanner;
public class Ppa1_cv04_1_A16B0052K {
    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in, "Windows-1250");
        System.out.println("Zadej cislo a:");
        int a = sc.nextInt();
        System.out.println("Zadej cislo b:");
        int b = sc.nextInt();
        System.out.println("---Vysledky---");
        System.out.println("Rovnice: " + a + " * x + " + b + " = 0");
        if ((a==0) && (b==0)) {
            System.out.println("ma nekonecne reseni");
        }
        if ((a==0) && (b != 0)){
            System.out.println("nema reseni v R");
        }
        if (a != 0){
            double y ;
                    y = 0 - (b);
            double x ;
                x = y/a;
            System.out.println ("ma reseni x = " + x);
        }
    }

}
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
9.10.2016 21:59
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.