Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
ANAF si plata la selfpay

Imprimanta ciss rezista perioade ...

Garmin fēnix 7 / PRO / Saphi...

Care sunt cele mai mari regrete a...
 Alfa Romeo Stelvio 2.2 jtd

Intrebari srl nou

La multi ani @AndReW99!

Alegere masina £15000 uk
 TVR vrea sa lanseze o platforma d...

Strategie investie pe termen lung...

Modulator FM ptr auto alimentat p...

orange cablu f.o. - internet fara...
 Robinet care comuta traseul

A fost lansata Fedora 40

Samsung S24 plus

Imi iau un Dell? (Vostro vs others)
 

De ce nu merge?

- - - - -
  • Please log in to reply
18 replies to this topic

#1
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
package Test;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
public class Curs implements Comparable {
private String titlu;
private String profesor;
int credite;
private int an;

public Curs(String titlu,String profesor,int credite,int an)
{
this.titlu=titlu;
this.profesor=profesor;
this.credite=credite;
this.an=an;
}

public void setTitlu(String titlu)
{
this.titlu=titlu;
}
public String getTitlu()
{
return titlu;
}
public void setProfesor(String profesor)
{
this.profesor=profesor;
}
public String getProfesor()
{
return profesor;
}
public void setCredite(int credite)
{
this.credite=credite;
}
public int getCredite()
{
return credite;
}
public void setAn(int an)
{
this.an=an;
}
public int getAn()
{
return an;
}
public int compareTo(Object o)
{
return credite-((Curs)o).credite;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
TreeSet ts=new TreeSet();
for(int i=0;i<2;i++)
{
System.out.println("Titlu: ");
String titlu=sc.nextLine();
System.out.println("Profesor: ");
String profesor=sc.nextLine();
System.out.println("Credite: ");
int credite=sc.nextInt();
System.out.println("An: ");
int an=sc.nextInt();
sc.nextLine();
Curs c=new Curs(titlu,profesor,credite,an);
ts.add(c);
}
Iterator it=ts.iterator();
while(it.hasNext()) {
Curs c=(Curs)it.next();
System.out.println("Titlu: "+c.getTitlu()+", Profesor: "+c.getProfesor()+", Credite: "+c.getCredite()+", An: "+c.getAn());
}
}
}


Codul de mai sus merge, dar urmatorul nu si nu inteleg cum ar trebui sa-l fac sa mearga...

package Test;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
public class Curs {



private String titlu;
private String profesor;
int credite;
private int an;

public Curs(String titlu,String profesor,int credite,int an)
{
this.titlu=titlu;
this.profesor=profesor;
this.credite=credite;
this.an=an;
}

public void setTitlu(String titlu)
{
this.titlu=titlu;
}
public String getTitlu()
{
return titlu;
}
public void setProfesor(String profesor)
{
this.profesor=profesor;
}
public String getProfesor()
{
return profesor;
}
public void setCredite(int credite)
{
this.credite=credite;
}
public int getCredite()
{
return credite;
}
public void setAn(int an)
{
this.an=an;
}
public int getAn()
{
return an;
}

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
for(int i=0;i<2;i++)
{
System.out.println("Titlu: ");
String titlu=sc.nextLine();
System.out.println("Profesor: ");
String profesor=sc.nextLine();
System.out.println("Credite: ");
int credite=sc.nextInt();
System.out.println("An: ");
int an=sc.nextInt();
sc.nextLine();
Curs c=new Curs(titlu,profesor,credite,an);

}
System.out.println("Titlu: "+c.getTitlu()+", Profesor: "+c.getProfesor()+", Credite: "+c.getCredite()+", An: "+c.getAn());

}
}


Codul asta e de fapt primu cod dar fara sortare, adica vreau doar sa citesc si sa afisez, dar nu merge si nu pricep de ce sau cum ar trebui sa fac asta.
Stiu sa citesc si sa afisez simplu, dar nu inteleg cu acest get si set, imi poate explica cineva ce sunt astea, va rog? Sunt specifice metodei comparable? Sunt cam paralel cu java...
In al doilea cod imi zice " c cannot be resolved".

Si inca ceva, de ce daca sterg "c." trebuie sa pun static peste tot ca sa mearga afisarea ?De exemplu doar cu getTitlu() -  daca scriu asa merge, dar dupa cum am zis, trebuie sa le fac pe toate de mai sus static; De ce cand e cu "c." ca in primul exemplu nu-mi cere sa le setez static?

Edited by g0dafk, 03 November 2018 - 13:51.


#2
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
Problema ta e simplă, variabila c nu mai există când vrei să faci afișarea. Aruncă un ochi pe aici https://www.geeksfor...-scope-in-java/

Get și Set sunt doar metode. Denumirea lor este o convenție care indică ce fac, Get obține valoarea unei variabile, Set, setează valoarea unei variable.

Nu am înțeles ce faci static? Metodele clasei?

LE: Dacă faci statice atât metodele cât și variabile clasei va merge doar cu getTitlu() pentru că, o metodă sau o variabilă statică nu mai este legată de o instanță specifică a unei clase, cum ar fi variabila c, ci este legată de clasa însuși.

Edited by tavitu, 03 November 2018 - 14:19.


#3
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016

View Posttavitu, on 03 noiembrie 2018 - 14:01, said:

Nu am înțeles ce faci static? Metodele clasei?

Ma obliga sa fac static titlu, profesor, credite si an cand in declar clasa + get-urile.
public class Curs {



private static String titlu;
private static String profesor;
private static int credite;
private static int an;
.
.
.
.

public static String getTitlu()
{
return titlu;
}

Oh, si mare idiot sunt. Credeam ca acel set si acel get e ceva special. Acum am modificat din getTitlu, etc in blabla si alte denumiri d-astea fara sens si am vazut ca merge, deci e la fel ca in C++?

class Curs
{
string profesor;
void afisare()
{
cout<< profesor;
}
};
......
vs

public Class Curs
{

private string profesor;

public String blabla()
{
return profesor;
}

}


Adica asa?

Edited by g0dafk, 03 November 2018 - 14:25.


#4
jegmihai

jegmihai

    Senior Member

  • Grup: Senior Members
  • Posts: 11,536
  • Înscris: 03.09.2013

View Postg0dafk, on 03 noiembrie 2018 - 14:16, said:

deci e la fel ca in C++?
De ce nu ar fi la fel?

#5
TruthHurts

TruthHurts

    Senior Member

  • Grup: Senior Members
  • Posts: 2,155
  • Înscris: 06.10.2018

View Postg0dafk, on 03 noiembrie 2018 - 14:16, said:

Ma obliga sa fac static titlu, profesor, credite si an cand in declar clasa + get-urile.
Nu te obliga, bajbai tu aiurea fara sa ai cunostinte elementare de java si oop. Ia o carte si invata de la zero, te prinzi tu cum e cu "obligatul" ala(n-are absolut nicio logica sa le faci statice, poate te prinzi si de ce daca inveti suficient)

#6
iulian_1976

iulian_1976

    Active Member

  • Grup: Members
  • Posts: 1,576
  • Înscris: 10.05.2008
...codul tau cu 2...3 modificari si functioneaza acum.O carte ar fi ok sa stii principiile de baza altfel contexte statice sunt nenumarate in Java.

In exemplul tau ce am modificat si cam ce notiuni trebuie sa acumulezi.
-clasa Curs se fixeaza separat de metoda statica main asa incat o sa observi 2 clase separate in acest moment
in plus probabil daca o sa avansezi putin o sa pui clasa Curs intr-un fisier separat,vezi despre metodele statice vs non-statice,instanta de clasa-clasa.
-titlu,profesor... se definesc in afara instructiei for altfel o sa ai o eroare ca nu este definita,probeaza singur Posted Image
-class Curs nu se pune "public" in fata,vezi in Java despre public-private-protected.



/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package test;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;

/**
*
* @author iulian
*/
class Curs {
/**
	 * @param args the command line arguments
	 */
private String titlu;
private String profesor;
private int credite;
private int an;
public Curs(String titlu,String profesor,int credite,int an)
{
this.titlu=titlu;
this.profesor=profesor;
this.credite=credite;
this.an=an;
}
public void setTitlu(String titlu)
{
this.titlu=titlu;
}
public String getTitlu()
{
return titlu;
}
public void setProfesor(String profesor)
{
this.profesor=profesor;
}
public String getProfesor()
{
return profesor;
}
public void setCredite(int credite)
{
this.credite=credite;
}
public int getCredite()
{
return credite;
}
public void setAn(int an)
{
this.an=an;
}
public int getAn()
{
return an;
}
}
public class Test{
public static void main(String[] args) {
	 // TODO code application logic here
String titlu=" ";
String profesor="";
int credite=0;
int an=0;
Scanner sc=new Scanner(System.in);
for(int i=0;i<2;i++)
{
System.out.println("Titlu: ");
titlu=sc.nextLine();
System.out.println("Profesor: ");
profesor=sc.nextLine();
System.out.println("Credite: ");
credite=sc.nextInt();
System.out.println("An: ");
an=sc.nextInt();
sc.nextLine();
}
Curs c=new Curs(titlu,profesor,credite,an);
System.out.println("Titlu: "+c.getTitlu()+", Profesor: "+c.getProfesor()+", Credite: "+c.getCredite()+", An: "+c.getAn());
}

}


Edited by iulian_1976, 04 November 2018 - 06:32.


#7
BraviaAmpero

BraviaAmpero

    Member

  • Grup: Members
  • Posts: 923
  • Înscris: 03.11.2018

View Postg0dafk, on 03 noiembrie 2018 - 14:16, said:

Credeam ca acel set si acel get e ceva special. Acum am modificat din getTitlu, etc in blabla si alte denumiri d-astea fara sens si am vazut ca merge, deci e la fel ca in C++?
Nicidecum, daca mai faci paralela asta cu C++ risti sa ti-o furi grav in java.

Problema ta este ca incerci sa accesezi o instanta noua a clasei Curs, de pe o metoda dintr-un context static al clasei Curs,(adica main)
Deci tu incerci de pe un context dinamic sa accesezi un context static care la randul instantiaza un context dinamic al aceiasi referinte:Curs.

Fa asa:
declara separat clasa Curs (poti s-o faci in acelasi fisier sau fisier separat)
declara clasa Main cu metoda statica main
Apeleaza in metoda statica main, o noua instanta a clasei Curs sau alte prelucari ale clasei Curs.
Rolul getterilor si al setturilor a sa-l afli mai tarziu dupa ce studiezi java mai mult timp.

#8
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
Inca 1 intrebare Posted Image :
1.Cum pot transforma asta intr-un vector?
class Carte
{
String titlu;
int pret;


public Carte(String titlu, int pret) {
this.titlu=titlu;
this.pret=pret;
}

public void setTitlu(String titlu)
{
this.titlu=titlu;
}
public void setPret(int pret)
{
this.pret=pret;
}

public String getTitlu()
{
return titlu;
}
public int getPret()
{
return pret;
}

}
public class Blabla
{

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

Carte c1= new Carte("abc",10);
Carte c2=new Carte("xyz",20);

System.out.println(c1.getTitlu()+c1.getPret());
System.out.println(c2.getTitlu()+c2.getPret());



//sc.close();
}
}


Adica, vreau sa fac un for de la 1 la n ... si sa citesc de la tastatura.Ceva gen:

for (int i=0;i<n;i++)
{
String x=sc.nextLine();
int y=sc.nextInt();
Carte c[i]=new Carte(x,y);

}
for(int i=0;i<n;i++)
{
System.out.println(c[i].getTitlu()+c[i].getPret());
}

Zic si eu, desi cred ca e o tampenie, dar cam asa "simt" eu c-ar trebui sa mearga... nu?

Edited by g0dafk, 04 November 2018 - 12:05.


#9
BraviaAmpero

BraviaAmpero

    Member

  • Grup: Members
  • Posts: 923
  • Înscris: 03.11.2018
import java.util.*;
ArrayList<Carte> carti = new ArrayList<Carte>();
for (int i=0;i<n;i++){
carti.add(new Carte(sc.nextLine(), sc.nextInt()))
}

carti.forEach(carte->{
System.out.format("%s cu pretul %d\n", carte.getTitlu(), carte.getPret());
});


Edited by BraviaAmpero, 04 November 2018 - 12:39.


#10
iulian_1976

iulian_1976

    Active Member

  • Grup: Members
  • Posts: 1,576
  • Înscris: 10.05.2008
Vector este una iar ArrayList este alta poveste,Vector are multe optiuni,o carte te ajuta mai mult daca vrei sa aprofundezi.
Nu te gandi ca in cateva luni o sa dai jos Java,se lucreaza cu multe concepte,sunt multe lucruri de aprofundat.

Un mic exemplu din multele lucruri care le contine acest limbaj:
-un fisier sursa Java se numeste o unitate de compilare(compilation unit) fiecare unitate poate avea o singura clasa publica care are acelasi nume cu fisierul.
In concluzie in acelasi fisier daca nu pui nimic in fata clasei este considerata "friendly" cu clasa principala publica,va fi accesibila si pentru fisierele din acelasi pachet dar inaccesibil din exterior,din cate stiu nici nu te lasa sa pui private.
Trebuie sa specifici modalitatea de acces pentru fiecare clasa,metoda,variabila diferit de C++ unde un specificator de acces poate
afecta mai multe metode...

Edited by iulian_1976, 04 November 2018 - 20:13.


#11
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
Revin cu inca un cod ce imi da o eroare pe care n-o inteleg...

try
{
FileInputStream fisier=new FileInputStream("C:\\Users\\Admin\\Desktop\\jocuri.txt");
Scanner sc=new Scanner(fisier);
Game g[]=new Game[2];
for (int i=0;i<2;i++)
{
int utilizatori=sc.nextInt();
String tara=sc.nextLine();
String companie=sc.nextLine();
int nota=sc.nextInt();
String nume=sc.nextLine();
sc.nextLine();
g[i]=new Game(utilizatori,tara,companie,nota,nume);
}
Arrays.sort(g);
for(int i=0;i<2;i++)
{
System.out.println(g[i].getUtilizatori()+g[i].getTara()+g[i].getCompanie()+g[i].getNota()+g[i].getNume());
}

}


Si asta-i eroarea:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at pachet.Game.main(Game.java:44)

Edited by g0dafk, 08 November 2018 - 23:10.


#12
tavitu

tavitu

    Minune: HE a început să emită facturile!

  • Grup: Senior Members
  • Posts: 5,598
  • Înscris: 16.02.2009
Ochiometric cred că ai o problemă cu fișierul jocuri.txt. Conținutul nu este în formatul așteptat de program.

Edited by tavitu, 09 November 2018 - 12:57.


#13
g0dafk

g0dafk

    Member

  • Grup: Members
  • Posts: 462
  • Înscris: 10.11.2016
Am observat ca daca, de exemplu citesc un string cu nextLine() si apoi un int cu nextInt() imi da eroare. Daca vreau sa citesc date de tip diferit trebuie sa citesc prima data tot ce e string si apoi tot ce e int... Asa e in java ? In codul din postul meu anterior se observa ca am citit int string string int string . Mai tarziu m-am gandit si am citit string string string int int si a functionat...
P.S: Am facut asta de la tastatura.
Si inca o intrebare, de ce trebuie sa mai pun un scanner nextLine() in for, dupa ce imi citesc toate variabilele? Am observat ca fara el imi da eroare. Mi s-a spus ca e pentru "enter", adica ar fi un fel de... treci pe randu urmator dupa ce citesti ultima valoare, dar mi-e tare vaga explicatia asta. In plus uneori trebuie sa-l pun inainte sa-mi citesc variabilele ca altfel imi da eroare.

#14
puiu_pe_diezel

puiu_pe_diezel

    Member

  • Grup: Members
  • Posts: 375
  • Înscris: 01.10.2018
de data asta te las pe tine sa cauti unde este eroare.
Sfat :niciodata in java sa nu mai folosesti array-uri unde declari inainte valoarea maxima.
in java foloseste ArrayListuri care isi updateaza dinamic dimensiunea

#15
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View Postpuiu_pe_diezel, on 11 noiembrie 2018 - 16:59, said:

Sfat :niciodata in java sa nu mai folosesti array-uri unde declari inainte valoarea maxima.
Deci ceva de genul:

new int[bufferSize]

nu e bine, daca bufferSize e hardcoded?

Edited by OriginalCopy, 11 November 2018 - 18:17.


#16
CrocodiluMereuVesel

CrocodiluMereuVesel

    Member

  • Grup: Members
  • Posts: 615
  • Înscris: 23.07.2018
nu, e ceva de genul ca acel  bufferSize se autoincrementeaza si autodecrementeaza in functie de operatiile I/O din colectie, asta daca colectia are flagul de mutable =ON (in cazul  java este) dar in unele limbaje de programare sunt colectii cu flagul de mutable = ON sau OFF(immutable)

#17
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostCrocodiluMereuVesel, on 11 noiembrie 2018 - 19:18, said:

nu, e ceva de genul ca acel  bufferSize se autoincrementeaza si autodecrementeaza in functie de operatiile I/O din colectie, asta daca colectia are flagul de mutable =ON (in cazul  java este) dar in unele limbaje de programare sunt colectii cu flagul de mutable = ON sau OFF(immutable)
Inteleg. Si cu

View PostOriginalCopy, on 29 octombrie 2018 - 13:39, said:

View PostCrocodiluMereuVesel, on 29 octombrie 2018 - 12:35, said:

Avem o echipa care lucreaza acum la propriul in-house sistem de operare, pornind de la kernelul de Linux, si avem pt viitor planuri sa ne facem prorpiul kernel de OS
Care e problema pe care o aveti si vreti sa o rezolvati prin asta?
cum este?

#18
CrocodiluMereuVesel

CrocodiluMereuVesel

    Member

  • Grup: Members
  • Posts: 615
  • Înscris: 23.07.2018

View PostOriginalCopy, on 13 noiembrie 2018 - 12:52, said:

Inteleg. Si cu

cum este?
Nu inteleg. Ce ar trebui sa fie ?

Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate