Learn Java
304 subscribers
92 photos
1 video
94 files
84 links
یاد گیری زبان برنامه نویسی جاوا و نکات و مفاهیم
کاربردی ان



@parsa8113
@bardiademon
Download Telegram
جاوا به زبان ساده 34

عبارت تکرار do...while

عملکرد عبارت do...while همانند عبارت while است. در عبارت while , شرط تکرار حلقه در ابتدای حلقه تست میشود
قبل ازینکه بدنه در حلقه به اجرا در اید.

اما عبارت do...while شرط را پس از اجرای حلقه تست میکند

درواقع یکبار حلقه رو اجرا میکنه بعد نگاه میکنه به شرطا
ولی while خالی اول نگاه میکنه به شرطا اگه برقرار بود اجرا میکنه

به مثال های زیر توجه کنید :

public class DoWhileTest
{
public static void main
{
int counter = 1;
do {
System.out.printf("%d ", counter);
++counter;
}

while (counter<=10)
System.out.println();
}
}

output :
1 2 3 4 5 6 7 8 9 10

در این برنامه برای چاپ مقادیر یک تا ده از do...while استفاده شد

در اولین برخورد برنامه با این عبارت , مقدار متغیر counter(با مقدار ۱)
چاپ شده, سپس counter یک واحد افزایش میابد. سپس با عبارت while ارزش یابی شده و برنامه در میابد که counter کوچک تر یا مساوی ده نشده وسپس do..while از اول اجرا شده و این روند ادامه خواهد یافت تا مقدار counter به ده برسد

توجه :
++counter
همان
counter++
است
j2ewiz.exe
7.1 MB
گرفتن خروجی exe از فایل های جاوا
(jar file)
در این آموزش یاد می گیریم که چگونه می توان در زبان جاوا آبجکت ها را به سادگی در فایل نوشت و از فایل خواند. در این آموزش با دو کلاس فوق العاده مفید و کاربردی ObjectInputStream و ObjectOutputStream آشنا می شویم.

به جای شرح تئوری سعی می کنم در طی چند مثال شما را با ذخیره سازی آبجکت در فایل آشنا کنم.

اگر بخواهیم انواع داده اولیه مانند int ، float یا double یا ... را در فایل به صورت آبجکتی ذخیره کنیم باید از کلاس های متناظر با آن ها استفاده کنیم ، به عنوان مثال برای ذخیره سازی نوع داده ای از نوع int در فایل به صورت آبجکتی باید از Integer استفاده کنیم.

اشیا را باید به همان ترتیبی که در فایل می نویسیم از فایل بخوانیم. در مثال زیر ابتدا رشته name و سپس عدد score به صورت آبجکتی در فایل ذخیره می شوند. برای خواندن از فایل نیز ابتدا باید مقدار متناظر با name را از فایل بخوانیم و سپس مقدار متناظر با score . اشیا خوانده شده از فایل به صورت Object هستند و خودمان باید آن ها را cast کنیم.


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;



public class ObjectFileExample {

public ObjectFileExample() throws Exception {

File mFile=new File("myfile.sfc");

/* Write Objects To File */
FileOutputStream fos=new FileOutputStream(mFile);

ObjectOutputStream oos=new ObjectOutputStream(fos);

String name="Parsa";
Integer score=20;

oos.writeObject(name);
oos.writeObject(score);

oos.close();
fos.close();

/* Read Objects From File */
FileInputStream fis=new FileInputStream(mFile);

ObjectInputStream ois=new ObjectInputStream(fis);

String nameInFile=(String)ois.readObject();
Integer scoreInFile=(Integer)ois.readObject();

System.out.println(nameInFile+" , "+scoreInFile);

ois.close();
}
public static void main(String[] args) {
try {
new ObjectFileExample();
} catch (Exception e) {
e.printStackTrace();
}
}
}


خروجی برنامه به صورت زیر خواهد بود :

Parsa , 20
در JDK‌ جاوا دو راه حل برای کار با فایل های XML قرار داده شده است. یکی DOM و دیگری SAX‌ . البته راه های دیگری نیز وجود دارد.

شاید بتوان گفت که DOM ساده ترین روش کار با فایل های XML است. DOM Parser کل سند XML‌ را خوانده و آن را به صورت درختی در حافظه قرار می دهد ، سپس ما می توانیم از این ساختار استفاده کنیم و داده های داخل فایل XML‌ را بخوانیم. مزیت DOM‌ سادگی آن است. از معایب آن نیز می توان به مصرف حافظه زیاد و کند بودن اشاره کرد.

اگر قصد دارید با فایل XML‌ ای کار کنید که حاوی اطلاعات زیادی است بهتر است از SAX استفاده کنید.

همانطور که قبلا هم گفتم یکی از بهترین راه های یادگیری استفاده از مثال . در ادامه سعی می کنیم با چند مثال با DOM و کار با فایل های XML‌ آشنا شویم.

قبل از شروع کار بهتر است یک فایل XML ایجاد کنیم و آن را در جای خاصی ذخیره کنیم. در اینجا من فایلی به نام friends.xml ایجاد می کنم و محتوی زیر را در آن می نویسم :


<?xml version="1.0" encoding="UTF-8"?>
<friends>
<person id="1">
<name>ahad</name>
<lastname>birang</lastname>
<gamescore>4.6</gamescore>
</person>
<person id="2">
<name>navand</name>
<lastname>namirania</lastname>
<gamescore>0.4</gamescore>
</person>
<person id="3">
<name>mehdi</name>
<lastname>akbari</lastname>
<gamescore>5.2</gamescore>
</person>
</friends>

فایل را در همان پوشه کد برنامه قرار می دهم. سپس با استفاده از کد زیر این فایل را به راحتی می خوانیم :



import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


/**
*
* @author safeallah
*/
public class DOMParserExample {

public DOMParserExample(){
try{
File xmlFile=new File(getClass().getResource("friends.xml").getFile());
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document document=db.parse(xmlFile);

document.getDocumentElement().normalize();

System.out.println("[Root : "+document.getDocumentElement().getNodeName()+" ]");

NodeList list=document.getElementsByTagName("person");

for(int i=0;i<list.getLength();i++){
Node n=list.item(i);
if(n.getNodeType()==Node.ELEMENT_NODE){
Element element=(Element)n;
System.out.println("-----");

System.out.println("id \t\t:"+element.getAttribute("id"));
System.out.println("name \t\t: "+element.getElementsByTagName("name").item(0).getTextContent());
System.out.println("lastname\t: "+element.getElementsByTagName("lastname").item(0).getTextContent());
System.out.println("gamescore\t: "+element.getElementsByTagName("gamescore").item(0).getTextContent());

}

}


}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
new DOMParserExample();
}
}


خروجی برنامه :


[Root : friends ]
—---
id :1
name : ahad
lastname : birang
gamescore : 4.6
—---
id :2
name : navand
lastname : namirania
gamescore : 0.4
—---
id :3
name : mehdi
lastname : akbari
gamescore : 5.2
بازی دوز با الگوریتم هرس الفا بتا

محیط : کنسول
لذت ببرید
Forwarded from Deleted Account
AlphaBetaMinimaxTTT.java
9.2 KB
🔮معکوس کردن یک عدد در جاوا
مثال: 123--->321
پاسخ:
package dot;

import java.util.Scanner;

class Reverse {

public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("Please Enter the number:");
int num = input.nextInt(); // take argument as command line

int remainder, result = 0;

while (num > 0) {

remainder = num % 10;

result = result * 10 + remainder;

num = num / 10;

}

System.out.println("Reverse number is : " + result);

}

}
.................
تولید 5 عدد رندم(تصادفی) بین 1 تا 100 در جاوا
پاسخ:
class RandomDemo{

public static void main(String args[]){

for(int i=1;i<=5;i++){

System.out.println((int)(Math.random()*100));

}

}

}
.................
#تمرین_جاوا
♦️شبه کد زیر را در نظر بگیرید:

if (aNumber >= 0)
if (aNumber == 0)
System.out.println("first string");
else
System.out.println("second string");
System.out.println("third string");

..............................
✳️سوال اول- اگر مقدار aNumber برابر عدد 3 بود خروجی چه میشد؟

حل:
second string
third string
#پرسش_و_پاسخ_جاوا
تعریف وراثت؟
فرآیندی که یک شی خصوصیات سایر اشیا را به دست می آورد.
برنامه زیر عدد باینری(عدد در مبنای2) را به عدد دسیمال(عدد درمبنای 10) تبدیل می کند:
...........................
/*
Convert binary number to decimal number example.
This example shows how to convert binary integer number
to decimal integer number using valueOf method of Integer
wrapper class.
*/
package javalike;

public class ConvertBinaryToDecimalNumber {

public static void main(String[] args) {

//declare string containing binary number
String strBinaryNumber = "111000";

/*
* to convert binary number to decimal number use,
* int parseInt method of Integer wrapper class.
*
* Pass 2 as redix second argument.
*/

int decimalNumber = Integer.parseInt(strBinaryNumber,2);
System.out.println("Binary number converted to decimal number");
System.out.println("Decimal number is : " + decimalNumber);

}
}

/*
Output would be
Binary number converted to decimal number
Decimal number is : 56
*/
................................
✔️خروجی:
Binary number converted to decimal number
Decimal number is : 56
............................................
✳️ویژگی این برنامه: این برنامه با سورس کد بسیار کوتاه عدد باینری را به عدد دسیمال تبدیل می کند.
مرتب سازی عناصر درون یک آرایه
در سورس کد زیر ما یک آرایه از نوع String داریم که عناصر درون ان را بر اساس حروف الفبا مرتب سازی می کنیم.
.........................................
package test;

import java.util.Arrays;

public class Test {

public static void main(String[] args) {
String[] fruits = new String[] { "Pineapple", "Apple", "Orange",
"Banana" };

Arrays.sort(fruits);

for (int i = 0; i < fruits.length; i++) {
System.out.println("fruits " + " : " + fruits[i]);
}

}

}
.........................................
خروجی:
fruits : Apple
fruits : Banana
fruits : Orange
fruits : Pineapple
........................................
#تمرین
public class Exercise10 {

static int max;
static int min;

public static void max_min(int my_array[]) {
max = my_array[0];
min = my_array[0];
int len = my_array.length;
for (int i = 1; i < len - 1; i = i + 2) {
if (i + 1 > len) {
if (my_array[i] > max) max = my_array[i];
if (my_array[i] < min) min = my_array[i];
}
if (my_array[i] > my_array[i + 1]) {
if (my_array[i] > max) max = my_array[i];
if (my_array[i + 1] < min) min = my_array[i + 1];
}
if (my_array[i] < my_array[i + 1]) {
if (my_array[i] < min) min = my_array[i];
if (my_array[i + 1] > max) max = my_array[i + 1];
}
}
}

public static void main(String[] args) {
int[] my_array = {25, 14, 56, 15, 36, 56, 77, 18, 29, 49};
max_min(my_array);
System.out.println(" Original Array: " + Arrays.toString(my_array));
System.out.println(" Maximum value for the above array = " + max);
System.out.println(" Minimum value for the above array = " + min);
}
}
==============
خروجی:
Original Array: [25, 14, 56, 15, 36, 56, 77, 18, 29, 49]
Maximum value for the above array = 77
Minimum value for the above array = 14
===============
#سوال
چگونه حروف تکراری رو از یک رشته حذف کنیم؟


package test;

import java.util.Scanner;

public class Test {
public static String removeDup(String inputString) {
if (inputString.length() < 2)
return inputString;
if (inputString == null)
return null;
char[] inputBuffer = inputString.toCharArray();
String str = new String();
for (int i = 0; i < inputBuffer.length; i++) {
for (int j = i + 1; j < inputBuffer.length; j++) {
if (inputBuffer[i] == inputBuffer[j]) {
inputBuffer[j] = 0;
}
}
}
for (int i = 0; i < inputBuffer.length; i++) {

if (inputBuffer[i] != 0) {

str += inputBuffer[i];
}
}
String result = new String(str);
return result;
}

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Enter the String:");

String str = input.next();
System.out.println(removeDup(str));

}

}
..................................
#سوال


✳️صورت سوال: برنامه ای به زبان جاوا بنویسید که یک متد داشته باشد که عملیات زیر را انجام دهد:
تبدیل مبنای 10 به عدد باینری(دودویی)
به این صورت که متد ما یک پارامتر ورودی داره و با صدا زدن و ست کردن متد تبدیل رو انجام
بده!!
🔵مثال: فرض کنید عدد ما در مبنای 10 این مقدار 693 باشد وقتی به مبنای 2 ببریمش می شود
1010110101 یا عدد 4 وقتی به مبنای 2 برده شود میشود 100
.....................
پاسخ:
package tutorial;

import java.util.Scanner;

public class Example2 {

public String decimalToBainary(int m) {
String s = new String();

while (m >= 2) {
if (m % 2 == 0) {
s += "0";
m = m / 2;
} else if (m % 2 == 1) {
s += "1";
m = m / 2;

}
}
s += "" + m;
String str = new String();
for (int i = s.length() - 1; i >= 0; i--) {

str += s.substring(i, i + 1);
}
return str;

}

public static void main(String[] args) {
Example2 t = new Example2();

System.out.println(t.decimalToBainary(7));

}

}
...............................
⬇️خروجی:
خروجی این برنامه در محیط کنسول بعد از کامپایل و اجرای برنامه بصورت زیر است:
111
نکته: عدد 111 یک عدد باینری یا دودویی هستش که تنها برای ماشین قابل فهم می باشد و با عدد صد و یازده اشتباه نگیریدش
...................................
#سوال


چگونه مثلث خیام-پاسکال را بدون استفاده از آرایه در جاوا ایجاد کنیم؟
—----------------------------------------------------------------------------------------------------------------------------------------------------------------
پاسخ:
package www.javapro.ir;

public class PascalTriangle {
public static void main(String[] args) {
int rows = 10;
for (int i = 0; i < rows; i++) {
int number = 1;
System.out.format("%" + (rows - i) * 2 + "s", "");
for (int j = 0; j <= i; j++) {
System.out.format("%4d", number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}
}
}
✳️در مثال زیر ما یک آرایه از نوع String داریم که مقدار اولیه شده است.
در برنامه ابتدا این آرایه در یک فایل جدید ریخته شده است
حالا در مرحله بعد قصد داریم این آرایه را از فایل ایجاد شده بخوانیم و درون یک آرایه جدید بریزیم
در نهایت مقادیر آرایه جدید را در محیط کنسول چاپ می کنیم.

سطح مثال:متوسط

................................................................................................
package fileIO;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStream;

public class ArrayinFile {

public static void main(String[] args) {
String name[]={"Ali","Reza","hasan","jafar"};

File addressOut=new File("name.txt");
try {
FileWriter fw=new FileWriter(addressOut);
for(int i=0;i<name.length;i++){
fw.write(name[i]+" ");
}
fw.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String getnameFile[]=new String[4];
File addressIn=new File("name.txt");
try {
FileReader fr=new FileReader(addressIn);
int ch=0;
String str=new String();
int i=0;
while((ch=fr.read())!=-1){
if(ch!=' '){
str+=(char)ch;
}else{
getnameFile[i]=str;
str="";
i++;
}

}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

for( int i=0;i<getnameFile.length;i++){
System.out.print(getnameFile[i]+" ");
}
}

}
=============================================
خروجی برنامه:
در کامپیوتر در پوشه پروژمون یک فایل با نام و فرمت name.txt ایجاد می شود.
در محیط کنسول خروجی بصورت زیر است:


اینم اموزشای این بخش...منتظر بقیه ی اموزش ها باشید (:
خود ازمایی :
نقشه ی ترسیمی یک خانه همانند یک ...........برای یک کلاس هست .

پاسخ : شی

اعلان هر کلاس که با کلمه کلیدی .......شروع میشود بایستی در فایلی ذخیره شود که دقیقا مشابه نام کلاس بوده و دارای پسوند .java هست

پاسخ : public

اعلان هر کلاس حاوی کلمه ی کلیدی ......بوده و بعد از ان بلافاصله نام کلاس اورده میشود .

پاسخ : class

جاوا دارای دو نوع اصلی برای ذخیره سازی اعداد اعشاری در حافظه است ..........و ...............

پاسخ : Double , float

متغیرهای از نوع float نشان دهنده ی ......... اعداد اعشاری هستند

پاسخ دقت منفرد

کلاس String در بسته ی ...........قرار دارد

پاسخ : java.lang

اگر همیشه به کلاسی با نام کامل ان مراجعه میکنید نیازی به ..........نیست

پاسخ : اعلان import
ماژول ها ی برنامه در جاوا

سه نوع ماژوال در جاوا وجود دارد - متد ها, کلاس ها و پکیج هاا. برنامه های جاوا متشکل از قسمت های متعددی از جمله متد ها و کلاس ها هستند.
برنامه نویس اقدام به ایجاد و ترکیب متد ها و کلاس های جدید با کلاس های از قبل اماده شده موجود در کتابخانه کلاس جاوایا همون
Java Api Programming Interface می کند.

در اکثر مواقع کلاس های مرتبط در پکیج ها گروه بندی می شوند از اینرو است که میتوان انهارا وارد برنامه کرده و از انها استفاده مجدد کرد. کتابخانه استاندارد جاوا کلکسیون با ارزشی از کلاس های از پیش تعریف شده است که حاوی متد هایی برای انجام محاسبات ریاضی, کار با رشته ها , کار با کاراکتر ها , عملیات ورودی/ خروجی (I/O)وعملیات پایگاه داده , عملیات شبکه , عملیات پرداز فایل , بررسی خطا و بسیاری از کاربرد های دیگر است..

از اینرو سعی کنید با کلکسیون ارزشمند کلاس ها و متد های موجود در Java Api اشنا شید ...
http://docs.oracle.com/javase/8/docs/api/


برخی از پکیج های پرکاربرد در پایین اورده شده است :

javax.swing
حاوی کلاس ها و واسط ها برای کامپونت های swing Gui جاوا است
javax.xml.ws
حاوی کلاس ها و واسط های برای کار با سرویس در وب در جاوا است
java.time
حاوی کلاس ها و واسط ها برای کار با تاریخ و زمان است. این پکیج برای جایگزین شدن با قابلیت های قدیمی تاریخ و زمان در پکیج java.util طراحی شده است
java.media
حاوی کلاس ها و واسط ها برای کار با قابلیت های مولتی مدیای جاواست
java.io
java input/output packag حاوی کلاس ها و واسط هایی است که به برنامه امکان ورود و خروج داده را میدهد
java.net
حاوی کلاس ها و واسط هایی است که به برنامه ها امکان برقرای ارتباط از طریق شبکه کامپیوتری همانند اینترنت را میدهند
java.sql

JDBC Package حاوی کلاس ها و واسط هایی برای کار با پایگاه داده است

java.util
حاوی کلاس های یوتیلیتی و واسط هایی است که کار با تاریخ و زمان و پردازش اعداد تصادفی و پردازش داده های حجیم همچنین تقسیم رشته ها به قسمت های کوچک تر به نام توکن را فراهم میکند

واقعا مجموعه پکیج های موجود در جاوا بسیار زیاد هستندو علاوه بر تعدادی از اندک پکیج ها که در بالا توضیح داده شد جاوا حاوی پکیج هایی برای انجام کار های گرافیکی پیچیده. واسط های گرافیکی کاربر پیشرفته . چاپ, شبکه سازی پیشرفته , امنیت , پردازش پایگاه داده , مولتی مدیا, گزینه های توانمندی برای افراد معلول و قابلیت های دیگر است
برترین زبان های برنامه نویسی سال 2017