Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Java problem: input

[es] :: Java :: Java problem: input

[ Pregleda: 3153 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.9.11.vie.surfer.at.



Profil

icon Java problem: input22.01.2005. u 15:30 - pre 233 meseci
Imam glavni program i sporednu klasu Studen, e sad ocu u Student da ubacim "edit()" metodu koja omogucava promenu podataka koji su vec uneseni za studenta:


ID (111111): 112233
ime (marko):
imeProfesora (pera): joca

// 111111, marko i pera su vec ranije uneseni i sad ocu da promenim ID broj i imeProfesora

Ovo je samo za ID broj

public void edit( "STA TREBA BITI OVDE")
{ System.out.print("ID (" + idBroj +") " );
try { String odgovor = unos.readLine(); } catch (IOException) {}
if (! odgovor.equals("")) { idBroj = Integer.parseInt(odgovor); }
}


 
Odgovor na temu

kobrejabre
Bgd

Član broj: 1793
Poruke: 269
*.nat-pool.bgd.sbb.co.yu.

Sajt: www.nemam.com


Profil

icon Re: Java problem: input22.01.2005. u 16:14 - pre 233 meseci
Najkraci odgovor na piranje "sta treba biti ovde" je: potpuno ti je pogresna koncepcija, toplo preporucujem Thinking in Java od Bruce Eckela.
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
*.hot.rr.com.



+64 Profil

icon Re: Java problem: input23.01.2005. u 01:53 - pre 233 meseci
pitanje ti nije bas nesto najbolje postavljneno ali evo nadam se da mogu nekako da pomognem.

prvo: iz jedne clase ces da zoves edit(pera)
znaci zoves method edit() i saljes pera kao argument.

e sada da bi koristio methode iz druge clase trebas da napravis object druge clase.
npr. DrugaKlasa primer = new DrugaKlasa();

posto sada imas objekat druge classe onda mozes da koristis methods iz druge clase.

znaci prvo zoves primer.edit(pera);

a druga classa ima nesto ovako
......

public String edit(String professorIme)
{

ovde radi sta oves;
...
......
......
return prefessorIme;
}

nadam se da ti je ovo pomoglo.

ali ovo je vec elemantarno tako da bi ti preporucio da procitas neku knjigu.
medjutim ako imas jos neka pitanja javi se.

nn
 
Odgovor na temu

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.9.11.vie.surfer.at.



Profil

icon Re: Java problem: input23.01.2005. u 14:36 - pre 233 meseci
Neka bude da sam ja nejasno objasnio problem:

Ovo je cela klasa Student:

Code:
import java.io.*;
public class Student {

    BufferedReader unos = new BufferedReader ( new InputStreamReader (System.in) );
    String odgovor = "";

    private String ime;
    private String programStudija;
    private int godina;
    private int idBroj;
    private String imeMentora;
    private double brojBodova;
    private boolean jeUpisan;


    // GET metode
    public String getIme()   { return ime; }
    public String programStudija() { return programStudija; }
    public int godina() { return godina; }
    public int idBroj() { return idBroj; }
    public String getImeMentora() { return imeMentora; }
    public double getBrojBodova() { return brojBodova; }
    public boolean jeliUpisan() { return jeUpisan; }


   // EDIT METODA

/* Editiraj studentove podatke
*/
public void edit(ConsoleReader input)
{
    System.out.print("ID (" + idBroj +") " );
    String odgovor = input.readLine();
    
    if (! odgovor.equals("")) {
            idBroj = odgovor;
            System.out.print("Ime (" + ime + ") ");
            odgovor = input.readLine();  }
    
    if (! odgovor.equals("")) {
            ime = odgovor;
            System.out.print("Program studija (" + programStudija + ") ");
            odgovor = input.readLine();
    if (! odgovor.equals(""))
    
    if (odgovor.equals("Elektronika") || odgovor.equals("Arhitektura") ) {
            programStudija = odgovor;
        else  {   System.out.println("Nepoznat program studija.");   }
        
        System.out.print("Godina (" + godina + ") ");
        odgovor = input.readLine();
        
    if (! odgovor.equals(""))  {  godina = Integer.parseInt(odgovor);  }
    
}
        






    // SET metode
    public void povecajGodinu() { godina++; }
    public void setIme(String x) { ime=x; }
    public void setProgramStudija(String x) { programStudija = x; }
    public void setIdBroj(int x) { idBroj = x; }
    public void setImeMentora(String x) { imeMentora = x; }
    public void setBrojBodova(double x) { brojBodova = x; }
    public void dodajBod() { brojBodova += 0.5; }
    public void upisi() { jeUpisan = true; }
    public void ispisi() { jeUpisan = false; }

    // KONSTRUKTORI
    public Student(String i, String p, int g, int id)
    {   idBroj = id;
         ime = i;
         godina = g;
         programStudija = p;
         imeMentora = "";
         brojBodova=0;
         jeUpisan = false;
     }
     public Student()
     {  idBroj=0;
          ime = "";
          godina = 0;
          programStudija = "";
          imeMentora = "";
         brojBodova=0;
         jeUpisan = false;

     }
     public Student(String i, String p, int id)
     {  idBroj = id;
          ime = i;
          programStudija = p;
          godina = 1;
          imeMentora = "";
         brojBodova=0;
         jeUpisan = false;
     }
     public Student(String i)
     {  idBroj = 0;
         ime = i;
         godina = 0;
         programStudija = "";
         imeMentora = "";
         brojBodova=0;
         jeUpisan = false;

     }

     // STAMPANJE
     public void prikaz() {
         System.out.println("Ime:\t" + ime + 
                           "\nProgramStudija:\t" + programStudija + 
                           "\nGodina:\t" + godina + 
                           "\nidBroj:\t" + idBroj + 
                           "\nImeMentora:\t" + imeMentora + 
                           "\nBrojBodova:\t" + brojBodova +                         
                           "\nStatus:\t" + jeUpisan);
     }
 }


Ovo je ConsoleReader

Code:
package PhoneApp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import PhoneApp.Data.*;

/**
 * This class provides the ability to read input from
 * a console. Users must enter commands line-by-line,
 * as the input is only triggered by hitting enter.
 *
 * @version $Date: 2001/06/25 $
 * @author  Steve Franklin
 * @since   jdk 1.3.1
 */

class ConsoleReader {

 /**
  * Default constructor has no behavior.
  */
  public ConsoleReader() {

  }

 /**
  * Send a prompt to the users, typically indicating the
  * type of information that the software is expecting.
  */
  public void sendPrompt(String prompt) {
    sendText(prompt + "\n");
  }

 /**
  * Send text to the user, and flush the output.
  */
  public void sendText(String text) {
    System.out.print(text);
    System.out.flush();
  }
  
 /**
  * Retrieve input from the user after providing a field-level
  * prompt.
  */
  public String getInput(String prompt) {
    System.out.print(prompt + ": ");
    System.out.flush();
    String userEntry = readInput();
    return userEntry;
  }
  
  /**
   * Read a number from the console
   */
  public int getUserNumber(String title, String prompt) {
    if ( title.length() > 0 ) {
      sendPrompt(title);
    }
    String optionText = getInput(prompt);
    int option = -1;
    try {
      option = Integer.parseInt(optionText);
    } catch (Exception e) {
      System.out.println("Unrecognized option.");
    }
    return option;
  }
  
 /**
  * Read input from the console using the BufferedReader. Trigger
  * input based on the user pressing enter. This function reads one
  * line at a time.
  */
  private String readInput() {
    BufferedReader consoleInput = new BufferedReader(new InputStreamReader(System.in));
    String userEntry = "";
    try { userEntry=consoleInput.readLine(); } catch (java.io.IOException e) { userEntry = ""; }
    return userEntry;
  }
  
}


I osnovni program recimo:
Code:
import java.io.*;
class probaStudent {
    public static void main(String[] args) {

       BufferedReader unos = new BufferedReader (new InputStreamReader(System.in));

       Student prvi = new Student();

       prvi.prikaz();

       System.out.println("Unesite ime studenta: ");
       try { prvi.setIme(unos.readLine()); } catch (IOException io) {}

       System.out.println("Unesite program studija: ");
       try {  prvi.setProgramStudija(unos.readLine()); } catch (IOException io) {}

       System.out.println("Unesite idBroj: ");
       try {  prvi.setIdBroj(Integer.parseInt(unos.readLine())); } catch (IOException io) {}

       prvi.prikaz();

       prvi.setIme("miljan");

       prvi.prikaz();

       prvi.povecajGodinu();

       prvi.prikaz();
       
       System.out.println();
       System.out.println("Editiraj podatke studenta.");
       st.edit(in);
       System.out.println();
       System.out.println("Student podaci:");
       st.prikaz();
   }
}





I u EDIT metodi nije mi jasno kako da umesto ConsoleReader klase napisem preko BufferedReader, sta treba menjati?








[Ovu poruku je menjao veljaradenkovic dana 23.01.2005. u 22:48 GMT+1]

[Ovu poruku je menjao veljaradenkovic dana 23.01.2005. u 22:49 GMT+1]
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.versatel.nl.

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Java problem: input23.01.2005. u 14:44 - pre 233 meseci
Citat:
Neka bude da sam ja nejasno objasnio problem:
Pridružujem se onima koji tvrde da nisi lepo objasnio problem.

Ne budi ti teško kada objašnjavaš da napišeš što više detalja. Često se dešava da iako je tebi u glavi problem jasan (što je normalno jer o njemu već razmišljaš), ostalima koji treba da te isprate (koji dakle nisu razmišljali na tu stranu) treba više detalja.

f
 
Odgovor na temu

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.9.11.vie.surfer.at.



Profil

icon Re: Java problem: input23.01.2005. u 15:23 - pre 233 meseci
Izvinjavam se moderatoru zbog pogreske.

Radi se o tome, da metoda EDIT treba da edituira vec postojece podatke. Trebalo bi da izgleda ovako:


Koji je ID broj studenta?
232323
Koje je ime studenta?
Ivan Stojkovic
Koji je program studija?
Informatika

Edituiraj podatke o studentu:
ID (232323) 232355
Ime (Ivan Stojkovic) //tu pritisnem enter jer sam to dobro napisao
ProgramStudija (Informatika) Arhitektura

Prikazi podatke o studentu:

ID: 232355
Ime: Ivan Stojkovic
ProgramStudija: Arhitektura

Znaci da ako su podaci pogresno uneseni na pocetku da postoji mogucnost ispravke.





 
Odgovor na temu

me-tuzalem
mensur tuzalemovic
novi pazar

Član broj: 25730
Poruke: 116
*.nat-pool.bgd.sbb.co.yu.



Profil

icon Re: Java problem: input24.01.2005. u 09:03 - pre 233 meseci
Mislim da ti je kobrejabre dao dobru dijagnozu
Citat:
kobrejabre: Najkraci odgovor na piranje "sta treba biti ovde" je: potpuno ti je pogresna koncepcija, toplo preporucujem Thinking in Java od Bruce Eckela.

U osnovi objektno-orijentisanog programiranja(projektovanja...) je da dobro pronađeš i dodeliš odgvornosti klasama. Metoda edit definitivno ne pripada Studentu. Suviše bi prostora ovde uzelo da se o svemu elaborira, pročitaj malo o Class Responsibility Colaboration, možda malo i o MVC(Model-View-Controller) iako ovde nemaš GUI, ali je korisno za razumevanje.
 
Odgovor na temu

samilen
Saša Milenković
Beograd

Član broj: 11606
Poruke: 106
*.rcub.bg.ac.yu.



Profil

icon Re: Java problem: input24.01.2005. u 22:18 - pre 233 meseci
Neću se pridružiti onima koji vole da uče sve oko sebe sa kog se kraja jede burek, već ću pokušati da ti pomognem.

Kao prvo, izbaci ConsoleReader, dok ti ne proradi primer, mislim da je on ovde napravio malu zbrku.
Drugo, u konstruktor klase Student prihvataj BufferedReader, umesto gore pomenutog.
Takođe ćeš malo izmeniti Student.edit(...) metodu, tako što ćeš umesto
Code:
idBroj=odgovor
napisati
Code:
idBroj = Integer.parseInt(odgovor);
sve linije koda koje sadrže ...readLine()... okruži sa try..catch blokovima, gde hvataš IOException.

Na kraju, u main metodi ćeš doterati zadnjih nekoliko redova, tako da izgledaju ovako:
Code:
       ...
prvi.edit(unos);//st->prvi in->unos
System.out.println();
System.out.println("Student podaci:");
prvi.prikaz();//st->prvi
       ...


Ovo bi sada trebalo da proradi, ako sam dobro razumeo pitanje. Jes da je kod malo nezgrapan, ali i elegancija će doći vremenom, samo ne odustaj.
 
Odgovor na temu

samilen
Saša Milenković
Beograd

Član broj: 11606
Poruke: 106
*.rcub.bg.ac.yu.



Profil

icon Re: Java problem: input24.01.2005. u 22:48 - pre 233 meseci
Nešto sam ispustio da ti napišem u prethodnoj poruci.U metodi edit bi provere unosa -
Code:
if (odgovor.equals("")){...}
-trebalo da se odnose samo na sledeću liniju koda, tako da bi trebao da obrišeš vitičaste zagrade koje se odnose na svaki takav if. Osim toga ne bi bilo loše da za svaki slučaj ovaj uslov obogatiš sa proverom da li je odgovor null što bi izgledalo ovako (za editovanje imena):
Code:
   ...try {
        odgovor = input.readLine();
      }
      catch (IOException ex) {}
    if ((odgovor!=null)&&(!odgovor.equals("")))
      ime = odgovor;...

Takođe razmisli i o hendlovanju NumberFormatException-a pri svakom pozivu Integer.parseInt(odgovor)

Toliko od mene.
 
Odgovor na temu

ZeRo8
Wien

Član broj: 168
Poruke: 235
*.9.11.vie.surfer.at.



Profil

icon Re: Java problem: input25.01.2005. u 13:03 - pre 233 meseci
Hvala na pomoci, sad je ok.
 
Odgovor na temu

[es] :: Java :: Java problem: input

[ Pregleda: 3153 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.