Java i nowa linia

0

Witam wszystkich,

jestem nowy zarowno na forum jak i z programowania javy, mam taki maly problemik,

jak wypisze jakis tekst na ekranie, kursor przechodzi mi automatycznie do nowej linijki, wszystko fajnie tylko akurat walcze z programem, gdzie jest mi to nie potrzebne a wrecz przeszkadza, jak zrobic aby wyswietlic tekst i pozostac w tym samym miejscu albo przejsc do nowej linii jak ja chce np. \n

dopowiem tylko, ze pisze w JCreatorze a wyswietlam w sposob nastepujacy:

System.out.println("tekst");

0

A jak myslisz, od czego jest nazwa println? Wpisz System.out. wcisnij Ctrl+spacje czy cokolwiek wlacza podpowiadanie kodu i rozkoszuj sie bogactwem metod wypisujacych cos na ekran ;-)

0

rzeczywiscie bez ln dziala lepiej ;)

ale te podpowiedzi to niebardzo sie pojawiaja moze kompilator ubogi w koncu darmowy;)

dzieki mimo wszystko, bardziej mi na tej linii zalezalo niz na podpowiedziach

0

@sysrek:
To się nie załamuj, tylko ściągaj za darmo lepsze IDE! (bo chodzi o IDE, czyli środowisko programistyczne, a nie sam kompilator Javy). Darmowe są np. Eclipse lub NetBeans -- wygooglujesz je sobie bez problemu. Mają podpowiadanie składni i mnóstwo innych fajnych rzeczy.

0

nie zalamuje sie, tylko korzystam z dobrych rad ;)

to IDE, to jakis "posrednik" pomiedzy środowiskiem uruchomieniowym Javy a kompilatorem??

mam wymog pisania w JCreatorze, czy po zainstalowaniu np. eclipse'a bede mogl dalej pisac w JC i bede mial podpowiedzi, czy bede musial pisac w Eclipsie aby z tego dobrodziejstwa korzystac, bo chyba eclipse powinien miec kompilator,

i jeszcze jedno która wersje wybrac, bo jest ich kilka, najbardziej podejrzane sa te dwie:

  • Eclipse IDE for Java EE Developers (189 MB)
  • Eclipse IDE for Java Developers (92 MB)
0

Jesli piszesz aplikacje EE (servlety, jsp, ejb, jpa, ...) to bierzesz for Java EE developers. W Twoim przypadku pewnie styknie ta mniejsza, ja tez sam bardzo czesto jej uzywam bo jest lzejsza (duzo mniej pluginow).
Co do pisania kodu to mysle ze mozesz pisac w Eclipse, co to ma do rzeczy, IDE to wybor programisty.
IDE to nie posrednik, to jest takie narzedzie ktore integruje kompilator, wypasiony edytor, debugger, pelno bajerow zaleznych od IDE, ale np refactoring jest standardem, no i code completion rowniez). Eclipse ma wlasny kompilator, nie korzysta z javac w JDK, dlatego po napisaniu kodu mozesz katalog src sam recznie skompilowac lub wlkeic do JCreatora czy cokolwiek.

0

@::
Może robi projekt do szkoły i narzucili mu IDE. Wiem, że narzucanie IDE to pewien debilizm, ale z drugiej strony... Gdybym w pewnym momencie nie musiał korzystać z Eclipse'a i paru wtyczek, to pewnie nadal tworzyłbym frontend aplikacji webowych (HTML/CSS/JS) w zwykłym VIM-ie. Nadal go zresztą używam, ale jednak jeśli tworzy się coś w JavaScripcie choćby na 2 tysiące linii kodu i kilka plików, to VIM nie jest już idealny (delikatnie mówiąc). Dlatego czasem głupie szkolne wymagania, nie mające odzwierciedlenia w rzeczywistości, pomagają. Na jednych zajęciach poznasz Eclipse'a, na drugich NetBeans, na trzecich jeszcze coś innego. Wszystkie te IDE są zaś na tyle dobre, że można korzystać z jednego i czuć się na tyle zadowolonym, by nie sprawdzać innych. Tymczasem jakieś inne byłoby dla Ciebie akurat lepsze. A jeśli w szkole poznasz je wszystkie, to dokonasz w miarę świadomego wyboru.

@sysrek
Niezupełnie. Hmm, jakby tu określić, co to takiego IDE... Cóż, IDE (środowisko programistyczne) to w pewnym sensie taki bardzo rozbudowany programistyczny edytor tekstu (konkretnie: kodu). Często zawiera też kompilator, żebyś nie musiał instalować go oddzielnie. W przypadku Javy kompilator nazywa się po prostu "javac" (Java Compiler). Kompilator ten jest częścią tzw. Java SDK, czyli Java Software Development Kit. To SDK zawiera oprócz kompilatora jeszcze debugger, archiwizator .jar, narzędzie do tworzenia dokumentacji javadoc i tak dalej.

No i taki Eclipse jest zgodny z najnormalniejszym w świecie Java SDK. W opcjach Eclipse'a możesz mu nawet ustawić, z którą wersją SDK ma być zgodny Twój kod (bo Java ma kilka wersji, tj. cały czas -- choć niezbyt często -- wychodzą nowe). Dlatego w praktyce sam wybór IDE nie oznacza, że Twój kod będzie jakiś inny, czy będzie inaczej kompilowany. Patrząc na sam kod źródłowy nie mógłbyś nawet stwierdzić, jakie IDE zostało użyte do jego stworzenia.

IDE umożliwia Ci wygodne pisanie kodu źródłowego -- chyba każde rozsądne IDE potrafi kolorować składnię kodu dla lepszej czytelności, a te w miarę dobre mają tez funkcję podpowiadania kodu. Jest ekstremalnie przydatna. Piszesz np. system.out, stawiasz kropkę, a on Ci podaje, jakich funkcji w system.out możesz użyć. Bez problemu zauważyłbyś, że oprócz println jest jeszcze print. Tak naprawdę bez IDE pisanie kodu Javy jest pewnym bólem. Kod klepałbyś np. w notatniku (co jest ździebko mało wygodne, delikatnie mówiąc), a potem musiałbyś ręcznie go kompilować z linii komend, używając javac. Często musiałbyś kompilować po parę plików. IDE robi to za Ciebie, a ty wciskasz tylko jeden guzik -- "Run", czy coś takiego.

Dodatkowo, dobre IDE umożliwiają też opcje tzw. refaktoryzacji. Co zrobisz, jeśli np. uznasz, że nazwa metody w jakiejś klasie jest w sumie bez sensu i chciałbyś ją zmienić? Użyjesz opcji edytora "Znajdź i zamień"? A co z odniesieniami do tej metody w innych plikach? Cóż, dobre IDE pozwala Ci kliknąć na jakąś metodę, z menu kontekstowego wybrać "Refactor" (lub coś w tym stylu) i po prostu podać nową nazwę. A IDE poszuka wszystkich (!) odniesień do tej metody we wszystkich plikach Twojego projektu i dokona odpowiednich zmian.

Ten Twój JCreator to już jest IDE. Tyle że najwyraźniej nie należy do najlepszych, skoro nie ma opcji podpowiadania. Nie wiem, bo sam go chyba nigdy nie używałem (a jeśli tak, to w szkole i bardzo dawno temu). Jeśli projekt robisz do szkoły, to możesz się spytać, czy nie mógłbyś użyć innego, wygodniejszego IDE.

Co prawda jeśli projekt robiłbyś w Eclipsie, a odpalał go na zajęciach w JCreatorze, to mogą wystąpić pewne... komplikacje. Tzn. tak jak napisałem wcześniej, IDE nie dodaje do kodu programu niczego od siebie, ale oprócz kodu programu, do projektu dołącza pewien plik (lub pliki) opisujące ten projekt. Takie dodatkowe informacje pomocne tylko temu konkretnemu IDE, np. ustawienia zależne od projektu. Oczywiście te ustawienia są zapewne inne w Eclipsie, a inne w JCreatorze, dlatego projekt z Eclipse'a nie ruszy od razu w JCreatorze.

Ale bez obaw! Bodaj każde IDE ma opcję "Utwórz projekt z istniejącego kodu źródłowego" (oczywiście opcja ta może nazywać się jakoś inaczej). Możesz więc zrobić cały projekt w Eclipsie, zanieść go na zajęcia, odpalić tam JCreatora i utworzyć w nim nowy projekt na podstawie kodu źródłowego z Eclipse'a (w końcu kod źródłowy jest uniwersalny, IDE nie dodają tam nic od siebie!). Wtedy wszystko będzie OK. Proponowałbym Ci to przećwiczyć w domu, tj. chociaż raz czy dwa zrobić sobie coś w Eclipsie i spróbować zaimportować do JCreatora. Nie powinno być z tym problemów, choć 100% pewności nie mam, bo JCreatora zupełnie nie kojarzę.

0

dzieki za wszelkie porady i wyjasnienia,

istotnie narzucili mi JC ale to nie znaczy, ze nie moge sobie czegos ulatwic,
po to jest IDE aby sobie zycie upraszczac

a tak przy okazji jak wyswietlic liczbe binarnie na "wszystkich" bitach, np. skoro int jest 32 bitowy, to cyfra 3 powinna wygladac tak:
00000000000000000000000000000011

0

Znajac zycie, to jest do tego juz jakies gotowe narzedzie, ktore ktos zaraz poda, ale w poczatkowej fazie nauki, jak sie nie wie, ze cos jest, to mozna samemu na nowo wynalezc kolo ;)

public class Test
	{
	public static void main(String[] args)
		{
		int iLiczba = 3;
		int iLiczbaBitow = 32;
		String iLiczbaBinarnie = Integer.toBinaryString(iLiczba);
		iLiczbaBinarnie = Test.leadingZeros(iLiczbaBinarnie, iLiczbaBitow);
		System.out.println(iLiczbaBinarnie);
		
		//lub
		
		int iInnaLiczba = 12;
		String iInnaBinarnie = Test.toBinaryStringLeadingZeros(iInnaLiczba, iLiczbaBitow);
		System.out.println(iInnaBinarnie);
		}
	public static String leadingZeros(String sBinaryNumber, int iLength)
		{
		String sNowyTekst = sBinaryNumber;
		while (sNowyTekst.length() < iLength)
			sNowyTekst = "0"+sNowyTekst;
		return sNowyTekst;
		}
	public static String toBinaryStringLeadingZeros(int iNumber, int iLength)
		{
		return Test.leadingZeros(Integer.toBinaryString(iNumber), iLength);
		}
	}

Mozesz sobie z takich metod stworzyc klase do importu statycznego, dzieki czemu bedzie mozna ich uzywac bez koniecznosci pisania nazwy klasy, w ktorej siedza.

0

Nie ma co tak kombinować.
Trzy przykłady, jak to zrobić prościej:

int j = 3;
for (int i = Integer.SIZE - 1; i >= 0; i--) {
	System.out.print((j & (1 << i)) >> i);
}
int j = 3;
System.out.print(new Formatter().format("%032d", Integer.valueOf(Integer.toBinaryString(j))));
int j = 3;
String s = Integer.toBinaryString(j);
for (int i = 0; i < Integer.SIZE - s.length(); i++) {
     System.out.print('0');
}
System.out.print(s);
0

dzieki, wyglada czytelniej

co musze zaimportowac abym widzial symbol Formatter

0
sysrek napisał(a)

co musze zaimportowac abym widzial symbol Formatter

import java.util.Formatter;

Klasa dostępna od Javy 5.

Jej dokumentacja:
http://java.sun.com/javase/6/docs/api/java/util/Formatter.html

"%032d" oznacza liczbę całkowitą (%032d), która ma mieć dokładnie 32 znaki (%032d). Liczba ta ma być w razie konieczności poprzedzona zerami (domyślnie są to spacje) (%032d).

0

jeszcze jeden zonk mi sie przytrafil,

a jak wyswietlic ujemne?
np -3 11111111111111111111111111111101

0

Właśnie tak jak wyswietliłeś, to jest -3 "na wszystkich bitach".

0

tak to ma wygladac, ale jak tu

System.out.print(new Formatter().format("%032d", Integer.valueOf(Integer.toBinaryString(j))));

zamiast j pojawi sie liczba ujemna to rzuca wyjatkami :(

wszystko ladnie dziala jak liczby sa nieujemne

0

Ten frgament

Integer.valueOf(Integer.toBinaryString(j))
jest błędny. On musi zgłasząć wyjątek dla każdej liczby ujemnej i dla dużych liczb dodatnich.
Moim zdaniem należy dopisać bardzo użyteczną i brakującą metodę padl()

String padl(String s,int dlugosc,String wypelniacz)
{
    dl=dlugosc-s.length();
    StringBuffer sb=new StringBuffer();
    for(int i=0;i<dl;i++)
      sb.append(wypelniacz);
   return wypelniacz.toString()+s;
}

i wypisywać liczby tak

System.out.println(padl(Integer.toBinaryString(j),32,"0"));
0

Przepraszam za błąd.
Zamiast Integer.valueOf trzeba użyć BigInteger

System.out.print(new Formatter().format("%032d", new BigInteger(Integer.toBinaryString(j))));
0

Będę bronił swojego rozwiązania. Klasa String jest trochę niedopracowana - mi brakuje w niej paru często stosowanych metod (np. padl() - uzupełnianie z lewej, padr() - uzupełnianie z prawej,..). Wygodne i rozsądne jest więc dopisanie tych metod. Ja to zrobiłem pisząc metody statyczne w klasie narzędziowej My.
Myślę, że składnia

System.out.println(My.padl(Integer.toBinaryString(j),32,"0"));

jest zrozumiała, a kod jest pozbawiony niepotrzebnych konwersji String => BigInteger => String

0

@__krzysiek85

nie masz za co przepraszac, to ja przepraszam za klopot

dzieki wszystkim, którzy sie zaangażowali za pomoc

0
bogdans_niezalogowany napisał(a)

Będę bronił swojego rozwiązania. Klasa String jest trochę niedopracowana - mi brakuje w niej paru często stosowanych metod (np. padl() - uzupełnianie z lewej, padr() - uzupełnianie z prawej,..). Wygodne i rozsądne jest więc dopisanie tych metod. Ja to zrobiłem pisząc metody statyczne w klasie narzędziowej My.
Myślę, że składnia

System.out.println(My.padl(Integer.toBinaryString(j),32,"0"));

jest zrozumiała, a kod jest pozbawiony niepotrzebnych konwersji String => BigInteger => String

Nie ma potrzeby tworzenia własnej metody "padl". Wystarczy ściągnąć apache commons (Lang utils dokładniej) i użyć metody leftPad z klasy StringUtils.

System.out.println(StringUtils.leftPad(Integer.toBinaryString(j),32,'0'));

http://commons.apache.org/lang//api/org/apache/commons/lang/StringUtils.html
http://commons.apache.org/downloads/download_lang.cgi

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.