Loading...
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

[Homework] Java Basics - Introduction to Java - May 2014

Домашното вече е качено в системата - цъкили си го свалете оттук

Доста търсене в нета ми се наложи, предвид, че няма лекция още (освен презентацията).

3.PrintHometown

5.CurrentDateTime

6.SumTwoNumbers

7.Console-Based-Compilation (Под windows среда):

1. cd до директорията или през file explorer, shift + десен бутон + open new command prompt window here
2. set path=%path%;C:Program Files\Java\jdk1.8.0_05\bin
3. javac SumTwoNumbers.java
4. java SumTwoNumbers

8.SortArrayOfStrings

10. Доколкото разбирам се прави jar с jar -cf име файлове и след това се отваря с java -jar файл, но не съм много сигурен, нека някой да даде по-точно обяснение.

Тагове:
30
Java Advanced 05/09/2014 00:50:20
Tr00peR avatar Tr00peR 566 Точки
Best Answer

Решение на 9 задача, доста време загубих над нея днес :)

Generate a PDF by External Library

EDIT2 - ЛИНК към решението в блога ми.

EDIT - линк за iText PDF Library.  От архива е нужен само itextpdf-5.5.0.jar файла.

Използвал съм itext. Ще се опитам да обясня стъпка по стъпка...

1. Създавам документ и го отварям.

2. Създавам таблица, в която ще записвам картите - аз лично съм я направил с 4 колони, 100% ширина и 180 височина на колона, просто така ми излежда най-добре, няма значение какво ще се сложи.. :)

3. Най-сложната според мен част - фонта, доста време ми отне да успея да изпринтя символите на боите във файла. Аз съм го направил така:

3.1. Първо създавам базов фонт, като за основа се взима файл от харда - ако е в папката на проекта може да напишете само името, иначе трябва пълен път до него. Този ред го намерих някъде в нета и работи - не мога да обясня какво точно прави. :)

3.2. За да ми е по-лесно после си правя два нови фонта на основа на миналия, като тук като втори параметър се подава желаният размер на фонта (аз съм сложил 75), и като четвърти - цвета му.

4. Тази стъпка на всички трябва да е ясна - генерирам картите с 2 вложени цикъла и суитч-кейс.

5. В последната конструкция директно добавям всяка карта в таблицата. Като параметър на addCell подавам параграф, който създавам на момента (може би ще е по-добре малко по-подробно да се разпише). Конструкторът за нов параграф, който използвам, има 2 параметъра - първият е стринга, а вторият фонта, който да се използва - тук слагам един от двата готови вече фонтове - червен или черен.

6. Накрая добавям цялата таблица в документа и го затварям.

41
coaster avatar coaster 412 Точки

Браво @Tr00per, много ми помогна с обясненията и с решението си! Ето какво сглобих от двете неща, че дори работи :)

<ЦЪК>

Би било интересно да се поиграе още със задачката, например да се удебелят бордърите на таблицата, или нещо още по-завъртяно, тъй като видях, че iText.jar дава възможност за вмъкване на картинки в .pdf файл - да се добавят някакви лица на картите J, Q, K, че защо не и на А :) Но важното е, че условието на задачата е изпълнено, от тук натам всичко зависи от нас.

3
DimitarYotov avatar DimitarYotov 75 Точки

А как се подкарват външни билиотеки?

0
gudov avatar gudov 274 Точки

DimitarYotov 

По-надолу в темата е отговорено.

itext

0
ttitto avatar ttitto 1153 Точки

Самуиле, давам ти цитат от книгата относно затварянето на scanner в задача 6:

В конструктора на Scanner се подава System.in. Както вече обяснихме, когато се извика close() на класа Scanner, по спецификация се затваря потокът, от който се чете, но това е стандартният вход (System.in) и ако той бъде затворен, вече няма да може да се чете от него. Следващи опити за четене от System.in ще доведат до грешки! Те могат да бъдат различни изключения, свързани с четене от затворен поток: IOException, IllegalStateException или NoSuchElementException.

Един вид, когато става дума за конзолата не се препоръчва да се затваря scanner инстанцията.

1
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

IDE-то пищеше и се чудех дали да го затворя, мерси :)

0
DimitarYotov avatar DimitarYotov 75 Точки

Абе каква е разликата между .next() и .nextLine();

Останах с впечатление че е за четене на стрингове ... обаче ако имаш да четеш няколко стринга и някой от тях е "бля бля 13", после става нещо като прескачане ?

 

Иоще един въпрос, проблем ли ще е всместо

import java.util.Scanner;

import java.util.Arrays;

да си ползвам направо import java.util.*; - в смисъл на изпита дали ще има някакви ограничения и да търся половин час Scanner ли беше какво беше

EDIT-мисълта ми е :

http://pastebin.com/jvc76pM9

но ако всички са next() - без Line - става малко странно ? или аз не схващам

0
coaster avatar coaster 412 Точки

По втория въпрос - като импортнеш java.util.*; импортваш цялата библиотека и по този начин си утежняваш програмата, което може би тук няма да е проблем, но по-натам като започнеш да пишеш по-тежки програми, ще искаш да пестиш ресурси от всякъде.

Разликата между .next(); и .nextLine(); вероятно е същата като между .Read(); и .ReadLine(); в С# - съответно едното чете в посока само напред символ по символ, а другото чете целия въведен текст, независимо от новите редове (not quite sure about this one :)

1
a_rusenov avatar a_rusenov 1103 Точки

Доколкото знам потоци на системни ресурси (System.in и System.out) се управляват от виртуалната машина и не е добра практика да се затварят. В случая няма значение, но ако решиш пак да го отвориш, ще ти хвърли exception.

0
nakov avatar nakov SoftUni Team Trainer 5295 Точки

Има едно просто правило: не затваряй нещо, което не си отворил.

Ако отвориш файл, след като приключиш работата с него, трябва да го затвориш.

При конзолата е различно и наистина не трябва да се затваря, защото не си я отворил ти, а някой друг (който и да е той).

7
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Иначе правилния начин да затваряш ресурси (например потоци) е чрез try-with-resources: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
5
MarinPetrov avatar MarinPetrov 20 Точки

Колеги вие как си отваряте проекта , примерно като искам да го отворя не е като VisualStudio натискаш фаила и готово зарежда ти целия проект.Имам предвид за демото !

0
kiko144 avatar kiko144 795 Точки

Влизаш в Еклипса Цъкаш дясно копче на Package Explorer-a > Import >General>Existinc project in to workspace и после си намираш директорията, където ти стои папката с демото. Цъкаш на цялата папка и после финиш :) 

11
MarinPetrov avatar MarinPetrov 20 Точки

Мерси колега , но проблем ли е така че ми се отваря в някоj съсществуващ проект ,защото с дясно копче като дам на Package Explorer ми дава само да го затворя и трябва да дам дясно копче на проект тогава чак излиза , ти колко програми имаш на демото аз имам 2 едни и същи плус Jar file !

0
kiko144 avatar kiko144 795 Точки

Имам 3 демота, 2 от които могат да се отворят с еклипс. HelloJava И CreatingJarFiles , Другото за компилирането през терминала не се отваря през еклипс. За това, че имаш повече от един проект в Explorera няма проблем, но ако те дразни си го Импортни и после изтрии предишният с дясно копче и Delete . Можеш да направиш същото нещо и от горе от File>Import 

1
ViValDam avatar ViValDam 15 Точки

ще може ли да не ползваме Еклипс , а други среди за Джава ?

1
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

Да, не е проблем други IDE-та и среди, просто лекторите ще ползват Eclipse под Linux. Даже на първата лекция, съдейки по презентацията ще бъде показан набързо и NetBeans

3
coaster avatar coaster 412 Точки

Искам да попитам ще има ли проблем да ползваме printf(), тъй като при някои хора (не знам дали при всички е така) работи единствено, когато сменя следните настройки:

Window -> Preferences -> Java -> Compiler -> Configure Project Specific Settings -> Compiler Compliance Level = 1.7

Или има ли някакъв начин printf() да си работи нормално без такива заобиколни действия?

1
MarinPetrov avatar MarinPetrov 20 Точки

Здравей при мен е на 1.8 като го запаметиш един път не ти ли стои за постоянно !дай му applay  и ok и би трябвало да нямаш повече проблеми!

1
kiko144 avatar kiko144 795 Точки

При мен си работи нормално, а не съм пипал никакви настройки. 

0
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Трябва да си смениш глобално default версията на Java и JDK в Eclipse. Ползвай "compiler version 1.8".
2
Dekameron avatar Dekameron 481 Точки

Колеги, когато задам десен бутон в Package Explorer > Import > Introduction-to-Java-Demos папката ми излиза проект с един клас HelloJava, на който ми дава грешка когато посоча върху "public class HelloJava {" :

Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor

Има червен удивителен знак върху самия проект и макар да виждам съдържанието на HelloJava класа, не мога да подкарам програмата.

Някой да има идея как се оправя това?

4
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Прилича ми на ненастроен Eclipse. Вероятно не е коректно зададен JRE. Провери опцията "Installed JREs" в Eclipse. Може да ползваш търсачката в горния десен ъгъл "Quick Access".
2
Dekameron avatar Dekameron 481 Точки

Оправих го!

Трябваше да задам Properties на проекта > Java Build Path > променям на JRE System Library [J2SE - 1.5]

4
coaster avatar coaster 412 Точки

Здравейте,

след кратко недоразумение между мен и конзолата на Eclipse, стигнахме до решение. В случай, че някой има същия проблем - конзолата не искаше да принтира unicode chars, разрових се в нета и намерих <това>

Или накратко:

Window -> Preferences -> General -> Workspace -> Text File Encoding -> Other -> UTF-8

Успех с 9-та задача!

2
Tr00peR avatar Tr00peR 566 Точки

Колеги, някой дали е направил вече 9та задача, че нещо запецнах... От 2часа не успявам да принтирам символите на картите в пдф-а, на конзолата всичко е наред, но във файла просто ги пропуска и изписва само цифрите. Всякакви фонтове пробвах и все е така. Ползвам itext.

0
AlexKondov avatar AlexKondov 91 Точки

А дали би могъл да обясниш как създаде самия PDF, тъй като мен това ме мъчи в последния един час? Добавих iText като external Jar, но имам проблем със създаването на самия документ. До колкото разбирам трябва да се импортнат разни неща, следвам стъпките, които са дадени, но може би аз не правя нещо като хората.

Мерси предварително.

0
Tr00peR avatar Tr00peR 566 Точки

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("MyFirstFile.pdf"));            
Document.open();

---------------------

Document.close();

 

Това са стъпките за създаване на файл, като преди това трябва да се импортне itext - десен бутон на проекта -> build path -> add external archive :)

2
AlexKondov avatar AlexKondov 91 Точки
Да, благодаря ти, аз тези стъпки ги спазвам, но въпреки това ми гърми някаква грешка, предполагам, че може би не съм изтеглил правилния JAR файл.. Ако не те затруднявам, дали би могъл да ми дадеш някакъв линк за iText JAR файла?
0
HPetrov avatar HPetrov 822 Точки

Ако някой от вас решиха да ползват готовия Убунту пакет с JDK 8, който Наков предостави може да срещне проблеми с 7-ма задача ако са решили да компилират от теминала на Linux. При мен ми даваше грешка от типа "Unsupported Class" нещо си. При проверка на java -version се оказа, че версията в момента е 1.7, а имаме jdk1.8.0 в home/usr/ директорията. В същото време javac -version връща 1.8.

Ето от къде идва проблема - java и javac версиите са различни. Първоначално проблема го оправих като set-нах PATH към необходимия java и всичко беше окай и тръгна, но след като затворих конзолата и пак е отворих -> все едно нищо не бях правил. Та като напишем "which java" в терминала излиза къде се намира уж оригиналния инсталиран. Там обаче са препрадките към оригиналните файлове java и javac. Javac като проверим си води към правилната директория докато java води до някаква друга директория, която от своя страна води до 3та директория и т.н. но не и към нашата.

Направих shortcut на java файла от jdk1.8.0_20/bin/ и просто го преместих при другите shortcut-и с sudo mv /dir/dir/dir/java /usr/bin/   където dir е пътя където сте направили shortcut-а. Проверих после версията на Java, рестартирах и пак проверих и всичко беше супер :)

0
nakov avatar nakov SoftUni Team Trainer 5295 Точки
Нещо ме съмнява да съм объркал Java версиите на Ubuntu виртуалката, която ви предоставих. Ето какво пише при мене:

developer@dev:~$ java -version
java version &quot;1.8.0_20-ea&quot;
Java(TM) SE Runtime Environment (build 1.8.0_20-ea-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b10, mixed mode)
developer@dev:~$ javac -version
javac 1.8.0_20-ea
developer@dev:~$

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.