我刚刚在Java类中开始学习Arrays,但是似乎有一个基本概念我无法掌握。从课本中获取以下示例代码:
public class DeckOfCards {
public static void main(String[] args) {
int[] deck = new int[52];
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] ranks = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "Jack", "Queen", "King"};
// Initialize the cards
for (int i = 0; i < deck.length; i++) //Line 9
deck[i] = i;
// Shuffle the cards
for (int i = 0; i < deck.length; i++) {
int index = (int)(Math.random() * deck.length); int temp = deck[i];
deck[i] = deck[index];
deck[index] = temp;
}
}
}
在第9行中,在“初始化卡片”的注释下,有人可以向我确切说明此目的吗?做什么用行来初始化第3行中的'52'牌组不是?
任何上下文都会有很大帮助。谢谢。
答案 0 :(得分:3)
在运行第9行和第10行之前,char GPSLatBuf[12], GPSLonBuf[12];
int parseGPSData(char * gpsBuffer)
{
char * p;
char gpsQuality = '0';
if((p = strstr(gpsBuffer, "$GPGGA")) == NULL)
return -1;
memset(GPSLatBuf, 0, sizeof(GPSLatBuf));
memset(GPSLonBuf, 0, sizeof(GPSLonBuf));
p += 7; // UTC time
if(*p != ',')
{
p += 10; // Latitude
if(*p != ',')
{
memcpy(&GPSLatBuf[1], p, 9);
p += 10; // N/S Hemisphere
if(*p != ',')
{
GPSLatBuf[0] = (*p == 'N') ? '+' : '-';
p += 2; // Longitude
if(*p != ',')
{
memcpy(&GPSLonBuf[1], p, 10);
p += 11; // E/W Hemisphere
if(*p != ',')
{
GPSLonBuf[0] = (*p == 'E') ? '+' : '-';
p += 2; // GPS quality
if(*p != ',')
gpsQuality = *p;
}
}
}
}
}
if(gpsQuality == '0')
return -1;
return 0;
}
如下所示:
deck
在运行第9行和第10行之后,{0, 0, 0, ... 0}
如下所示:
deck
这不是Java中形式化的“初始化”内容-在这种情况下,数组在第3行声明时被初始化,每个值都设置为0。
答案 1 :(得分:1)
第9行声明一个循环 for(计数器变量;保持循环运行的条件;递增计数器)
int i = 0
将值0声明为变量i; i < deck.length
意味着大括号内的代码将一次又一次地运行,直到先前声明的变量 i 小于deck.length为止;并且i++
将在每次迭代后被调用
第3行只是声明一个具有52个空位置的数组
答案 2 :(得分:1)
所以deck.length为52,这意味着for循环将执行52次,而i的值将在每个循环中增加1。
In 1st go value of i =0
Line 10 : deck[i] = i;
deck[0] = i;
set value at 0 index of deck = 0;
In 2nd run value of i = 1
Line 10 : deck[i] = i;
deck[1] = i;
set value at 1 index of deck = 1;
以此类推。
答案 3 :(得分:0)
第9行称为for statement
。它是大多数编程语言中都流行的循环构造。其目的之一是用更少的代码执行重复性任务。
第9行和第10行共同等效于以下52行代码:
deck[0] = 0;
deck[1] = 1;
deck[2] = 2;
...
deck[51] = 51;
详细了解Java docs上for
语句的工作原理。