java - 需要帮助理解方法中的数组 - java

标签 java arrays

我是编程初学者,几乎没有经验。我想学习 Java,因为我觉得它是一门非常值得学习的语言。我一直在遵循 youtube here. 上此播放列表的指南如果你仔细看一下,我正在看第 32 个视频,到目前为止 Java 非常有前途

无论如何,我需要帮助理解这段代码:

package learningjava;

class apples{
public static void main(String args[]){
    int lucas[]={3,4,5,6,7};
    change(lucas);
    
    for(int y: lucas)
        System.out.println(y);
}

public static void change(int x[]){
    for(int counter=0;counter<x.length;counter++){
        x[counter]+=5;
      }
   }
}

这段代码应该采用数组:int lucas[]={3,4,5,6,7};并将数组内的每个数字加 5。然后,它应该显示这些数字加上 5 后的总和;它就是这样做的,显示 8、9、10、11、12。我只是希望有人能为我消除这方面的烟雾,因为它很难理解。我不明白数组 lucas 如何连接到int x[] 。我也不明白为什么我们需要 for 循环或者它的作用。:

for(int counter=0;counter<x.length;counter++){
    x[counter]+=5;
}

这篇文章的制作和解释都很糟糕,但我现在非常想知道这段代码到底发生了什么。如果有人能给我一个彻底的解释,我将非常感激!

最佳答案

首先,在函数定义

public static void change(int x[]){

x是一个正式参数 - 您可以选择任意名称而不是 x ,因为它只是 real 的占位符参数。

后续命令显示该函数将使用real执行什么操作参数(目前未知)何时使用形式参数而不是实际参数来调用函数

现在该函数被调用(已使用):

change(lucas);

real参数 - 是的,我们想要改变 lucas !所以change()中的陈述函数定义现在使用 lucas 执行而不是x .

<小时/>

第二:为什么我们需要循环

for(int counter=0;counter<x.length;counter++){
   x[counter]+=5;
}

在您的特定代码中,我们不需要循环也不需要函数 change() 。我们可以使用直接方式添加5数组中的每个元素:

lucas[0] += 5      // is it shortened form for lucas[0] = lucas[0] + 5
lucas[1] += 5
lucas[2] += 5
lucas[3] += 5
lucas[4] += 5

但是我们通常会遇到两个问题:

  1. lucas可能有很多个元素,不仅仅是 5 .

  2. 我们想要对其他(目前未知)数组做同样的事情(每个元素加5),例如。 G。 mathew - 将来。

因此,我们将通过定义函数change()来一般性地解决这两个问题。它事先不知道数组的名称,也不知道 number of its items ,也不是 values of its items 。让x是该数组的占位符(形式参数)。

x.length

表示“使用该数组的属性(属性)长度” - 每个数组都有此属性,它是其项目的数量。

因此,在用真实参数( lucasmathew )替换正式参数( x )后,我们将知道这个真实数组。

我们在 for 中使用它循环:

for (int counter = 0; counter < x.length; counter++) {

这是另一个占位符(计数器),再次强调 - 它的名称并不重要,它可能是其他占位符,例如。 G。 i :

for (int i = 0; i < x.length; i++) {

我们需要这个占位符来表示数组元素的索引(一次一个索引) - 它们的编号不是来自 1但来自0 ,因此第一个元素的索引为 0 ,第二 1等等 - 所以最后一个将有索引 x.length - 1 .

如何实现此占位符( counteri 或其他任意名称)将依次具有值 0 , 1 , 2 , ETC。?

for声明

for (int counter = 0; counter < x.length; counter++) {

3 parts在其 header 中,由 ; 分隔:

  1. 第一部分定义了最初要做什么:
    int counter = 0; // set the first value of the placeholder to 0

  2. 第二部分定义了继续(循环)的条件:
    counter < x.length; // is the placeholder's value still less than number of items?
    如果不满足这个条件,则游戏为for循环结束。

  3. 最后一部分定义了要做什么(一次又一次):
    counter++ // increase the counter's (placeholder) value
    在循环体中执行命令后(在大括号 {} 之间)

现在,循环体内只有 1 条语句

     x[counter] += 5;     // Shorter form for x[counter] = x[counter] + 5;

这将按照之前的规则一次又一次地执行(当然,在用真实参数( lucas )替换正式之后em> 一 ( x ))。

关于java - 需要帮助理解方法中的数组 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44294194/

相关文章:

ruby - 按键对哈希数组进行分组

arrays - 如果有多个条件则求和

java - 简单的自动取款机。在 ATM 程序中获取零而不是交易

java - 无法从 mongodb java 驱动程序连接到 MLab Mongo 数据库

java - 如何访问 Java 中的 TreeSelectionListener 父类(super class)?

java - Liquibase 将日志写入 stderr

php - 插入数据库时​​内爆的二维返回值不相同(已编辑)

java - 打印 arrayadapter 中的替代项

Java - TCP套接字仅在LAN中连接

javascript - 如何从对象内部的数组中删除特定元素?