当前位置: 首页 > 知识库问答 >
问题:

整数计数错误[重复]

盛浩阔
2023-03-14

我正在做一个大项目,但对于这个问题,我写了一个简单的例子。我有两门课。

public class Main
{
    public static void main(String[] args)
    {
        CustomType[] customType = new CustomType[3];

        for(int i = 0; i < 3; i++)
        {
            customType[i] = new CustomType(i);
        }

        for(int i = 0; i < 3; i++)
        {
            System.out.println("Main " + customType[i].integer);
        }
    }
}

public class CustomType
{
    public static int integer;

    public CustomType(int input)
    {
        integer = input;
        System.out.println("CustomType: " + integer);
    }
}

我得到以下输出:

CustomType: 0
CustomType: 1
CustomType: 2
Main 2
Main 2
Main 2

但我想得到这个:

CustomType: 0
CustomType: 1
CustomType: 2
Main: 0
Main: 1
Main: 2

共有3个答案

易成双
2023-03-14

static是提示。。

你为什么认为一个静态变量首先会绑定到一个特定的实例?

尝试使用public int integer而不是公共静态整数 并查看实例变量背后的魔力。

阚通
2023-03-14

如果希望每个对象有不同的值,那么不要使变量为静态变量,而是将其设置为private,并使用getter方法检索私有变量。

 public static int integer;

 private int integer;

你的getter方法将检索数据

public int getInt()
{
    return integer;
}
谯德佑
2023-03-14

您的问题是因为您正在为integer使用静态变量。

静态变量对于对象或类的所有实例都是通用的(在您的例子中是CustomTypeclass)。简单地说,创建静态变量的一个副本,并在类的所有实例之间共享。

因此,当您在for循环的索引0处创建CustomType对象时,所有实例的静态变量值均为0。使用数组的索引位置1时,所有实例的索引位置都将更改为1。当您的for循环在索引位置2结束时,static变量以所有实例的值2结束。

相反,您需要做的是使用:public int integer

这将为每个CustomType对象赋予其自己的单独整数变量,该变量将被分配您正在寻找的正确值。

 类似资料:
  • 新手,我正在制作一个程序,生成一个带有适当后缀的随机序数(即1、2、3…)我无法获得randomInt();工作。我不断收到以下错误: 我在Google和Stack Overflow上搜索了一个无济于事的解决方案。我甚至从互联网上复制和编译了其他使用随机Int()的程序;它们都产生了同样的错误。你能告诉我我做错了什么吗?这是我的程序代码: 欢迎对我的节目提出批评。谢谢

  • 问题内容: 我有一个spring应用程序,并且我有一个使用以下语法的本地查询: 我得到了错误: 作为数据库,我使用PostgreSQL。我提到在mysql中,查询有效。 问题答案: Postgres不支持多于一列。但是,您可以使用以下类似的方法将两列简单地转换为匿名记录类型的单列:-这是匿名记录类型的单列。 注意两列的括号。 但是,在Postgres中,通过在子句中使用条件聚合,您可以采用一种更优

  • 问题内容: 我有一个整数数组,我想计算重复出现的元素。首先,我读取数组的大小,并使用从控制台读取的数字对其进行初始化。在数组中,我存储了重复的元素。该数组存储元素连续出现的次数。然后,我尝试搜索重复序列并以特定格式打印它们。但是,它不起作用。 我希望输出看起来像这样: 例如: 如何找到重复的元素及其计数?如何如上所示打印它们? 问题答案: 字典(Java中的HashMap)可以轻松解决此类问题。

  • 导入java.util.Scanner;公共类GroupActivity{公共静态void main()

  • 我有一个有82,535行的表,其中65,087行按ID是唯一的。当我拉取整个结果集82,535并复制到Excel并删除重复项时,它显示有17,448个重复项。但是当我使用下面的查询时,我得到了不同的结果: 此查询返回值17364 我确定唯一的的数目是65,087

  • 我正在一个WordPress网站上工作——它有大量的自定义代码和插件以及各种JQuery、引导和框架加载。 在最后一个加载页脚的最底部-I处: 我得到了错误: 显然,JQuery已经加载。我也尝试过在那里放置其他JQuery——除了加载的JQuery之外——我得到了相同的错误。 为什么我会得到$nota函数错误?