How to display the results of a for loop

조회 수: 63 (최근 30일)
Jesse Schultz
Jesse Schultz 2019년 9월 10일
편집: Walter Roberson 2023년 7월 26일
I want to make a game of 21, that starts with the user getting two random cards and then printing out what they get, using a for loop keeps saying "Index exceeds the number of array elements(1)."
my code is
for i =1:2
card = randi([0 10]);
if (card ==0)
card = 'A'; %if the result is 0, rename it to A
end
end
fprintf("You have been given 2 cards, %d and %d" , card(i))
  댓글 수: 1
Stephen23
Stephen23 2019년 9월 10일
편집: Stephen23 2019년 9월 10일
This defines a scalar numeric (an integer from 0 and 10, inclusive), which you name card:
card = randi([0 10])
Your code does not do anything that changes the size of card., or allocate/concatenate/etc it into any other variable. On each loop iteration you redefine card as a new scalar.
Then after the loop (whose last iteration defines i=2) you use this code:
card(i)
card only has one element (you defined it to be scalar), but you are trying to access its 2nd element. Thus the error.

댓글을 달려면 로그인하십시오.

답변 (1개)

Urmila Rajpurohith
Urmila Rajpurohith 2019년 9월 13일
As mentioned above the variable “card” is a scalar.
To display the results of for loop you can create a Null vector and append the card value to the vector and while printing the output you can print the vector.
result=[];
for i =1:2
card = randi([0 10])
if (card ==0)
card = 'A'; %if the result is 0, rename it to A
end
result=[result card];
end
fprintf("You have been given 2 cards, %d %d", result);
  댓글 수: 2
GAGANDEEP KAUR SIDHU
GAGANDEEP KAUR SIDHU 2023년 7월 26일
편집: Walter Roberson 2023년 7월 26일
result=[];
for i =1:2
card = randi([0 10])
if (card ==0)
card = 'A'; %if the result is 0, rename it to A
end
result=[result card];
end
fprintf("You have been given 2 cards, %d %d", result);
Walter Roberson
Walter Roberson 2023년 7월 26일
편집: Walter Roberson 2023년 7월 26일
Suppose 0 is randomly generated, and then (for example) 8. Then the sequence would go
result = []
result = []
card = 0 %assumption for testing
card = 0
card = 'A' %because of if test
card = 'A'
result = [result card]
result = 'A'
card = 8 %assumption for testing
card = 8
result = [result card]
result = ''
Where is the output ?
fprintf("You have been given 2 cards, %d %d", result);
You have been given 2 cards, 65 8
Okay, I see the 8 there, but what is the 65 ?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by