ورود

View Full Version : سوال: توضیح در مورد کدی از Loop ها



hadi_722
سه شنبه 11 آذر 1393, 23:25 عصر
چرا تو کد زیر خروجی به این صورت میشه؟
تو این قسمت از کد hesamNumber <= 1000 || hadiNumber <= 1000 از || که به معنی یا هست استفاده شده که یعنی با رسیدن یکی از متغیرها به 1000 باید برنامه از Loop خارج بشه اما یکیشون از 1000 رد میشه تا متغیر بعدی برسه
ممنون میشم جواب بدین
مرسی

خروجی:
http://a.disquscdn.com/uploads/mediaembed/images/1484/9047/original.jpg

import java.util.Random;
public class RandomNumber {
public static void main(String[] args) {
Random randomNumber = new Random();
randomNumber.nextInt(101);
int hesamNumber;
int hadiNumber;
for (hesamNumber = randomNumber.nextInt(101), hadiNumber =
randomNumber.nextInt(101); hesamNumber <= 1000 || hadiNumber <= 1000;
hesamNumber += randomNumber.nextInt(11), hadiNumber +=
randomNumber.nextInt(11)) {
System. out.println( "Hesam` number is " + hesamNumber + " and "
+ "Hadi`s number is " + hadiNumber);
}
if (hesamNumber > hadiNumber) {
System. out.println( "Hesam won the game and Hadi has to buy it." );
} else if (hesamNumber < hadiNumber) {
System. out.println( "Hadi won the game and Hesam has to buy it." );
} else {
System. out.println( "Now they have to think about a third solution!" );
}
}
}

ahmad.mo74
چهارشنبه 12 آذر 1393, 11:23 صبح
سلام، باید از && استفاده کنید یا :


public static void main(String[] args) {
Random randomNumber = new Random();
randomNumber.nextInt(101);
int hesamNumber;
int hadiNumber;
for (hesamNumber = randomNumber.nextInt(101), hadiNumber = randomNumber.nextInt(101); ;
hesamNumber += randomNumber.nextInt(11), hadiNumber += randomNumber.nextInt(11)) {
System.out.println("Hesam's number is " + hesamNumber + " and "
+ "Hadi's number is " + hadiNumber);
if (hesamNumber >= 1000 || hadiNumber >= 1000) {
break;
}
}
if (hesamNumber > hadiNumber) {
System.out.println("Hesam won the game and Hadi has to buy it.");
} else if (hesamNumber < hadiNumber) {
System.out.println("Hadi won the game and Hesam has to buy it.");
} else {
System.out.println("Now they have to think about a third solution!");
}
}

hadi_722
چهارشنبه 12 آذر 1393, 22:35 عصر
مرسی از جوابتون
اما && با || خیلی فرق داره از نظر معنی
سوالم همینه که چرا اینجا برعکس عمل میکنن
یعنی اگه از || استفاده بشه نیازه هر دو شرط بر قرار باشه اما با استفاده از && فقط یکی از شرطها؟

hadi_722
پنج شنبه 13 آذر 1393, 13:23 عصر
جوابمو پیدا کردم میذارم شاید واسه یکی دیگه هم سوال بود




یعنی با رسیدن یکی از متغیرها به 1000 باید برنامه از Loop خارج بشه اما
یکیشون از 1000 رد میشه تا متغیر بعدی برسه

در اینجا این اتفاق زمانی باید بیفته که شما از && استفاده کنید
پس شرطو اشتباه بررسی میکنین.در اینجا داره میگه اگر یکی از شرط ها صحیح بود پس به حلقه ادامه بده(پس اگر یکی بالای ۱۰۰۰ هم باشد باز دیگری صحیح است پس ادامه میدهد)
یا باید بگین :
hesamNumber<=1000 && hadiNumber<=1000
یا باید بگین
hesamNumber>1000 || hadiNumber>1000
که من الان فکر کنم گزینه دوم به همراه یک break بهتر باشد چون که عمومی تر و قابل خوندن تر برای همه هستش(جاوا نویس نیستم)

ایشون با اینکه جاوا نویس نبودن جواب کاملی دادن بهم