3

我刚开始编程,我想从一本书中锻炼身体,但我做不到。那是我的问题:

public class increment {
    int increment() {
        return this + 1; // aka this++
    }

    public static void main(String[] args) {
        int a = 0;
        System.out.println(a.increment());
    }
}

正如您肯定已经猜到的那样,它不起作用,我想问您如何使输出的整数 a 加一,但使用关键字“this”。

对愚蠢的问题表示问候和抱歉。

4

8 回答 8

6

像方法一样命名一个类是很奇怪的。我猜你想要这个:

public class Counter {

int val;

 public Counter (int start) {
   val = start;
 }
 public void increment() {
    val ++;
 }
 public String toString () {
   return Integer.toString (val);
 }

 public static void main(String[] args) {
    Counter counter = new Counter (0);
    counter.increment ();
    System.out.println(counter.toString ());
 }
}
于 2012-04-16T13:26:01.790 回答
4

this是一个对象(当前对象)。你不能“增加”它。

一种方法是:

public class Increment {
    int a = 0;
    int increment() {
        return a + 1; 
        // or: return this.a + 1;
        // or: a++; return a; if you want a to be incremented from now on
    }

    public static void main(String[] args) {
        Increment inc = new Increment();
        System.out.println(inc.increment());
    }
}
于 2012-04-16T13:21:19.387 回答
2

Java 中的this关键字指的是当前作用域的对象实例。在这种情况下,我认为这不是您要寻找的。

在您的示例中,a它不是类的对象increment,而是原始的int。为了使用.increment()您定义的函数,它必须是 type 的对象increment

可能是您正在寻找的一个选项如下。

public class Increment { //Java likes capitalized class names
    private int myInt;    

    public Increment(int a) { //constructor
        myInt = a;
    }

    public int increment() {
        return ++myInt;
    }    

    public static void main(String[] args) {
        Increment a = new Increment(0);
        System.out.println(a.increment());
    }

}

在这个例子中,我们创建了一个新的 type 类increment,它内部包含一个整数。它的增量方法递增该内部整数,然后返回该数字。

于 2012-04-16T13:26:38.153 回答
0

你不能像这样增加一个类。您必须使用可以递增的成员变量。

public class Test {
    private int var;

    public Test(int i) {
        this.var = i;
    }

    int increment() {
       this.var++;
    }
}

public static void main(String[] args) {
    Test t = new Test(0);
    System.out.println(t.increment());

}
于 2012-04-16T13:21:48.513 回答
0

您正在+为当前对象使用运算符 ( this)。Java 不支持运算符重载。

于 2012-04-16T13:22:20.057 回答
0

像这样的东西会起作用:

class MyInteger {
    private int internal;

    public MyInteger( int value ){
        this.internal = value;
    }

    public int incerment(){
        return ++this.internal;
    }
}

public class Increment {

    public static void main(String[] args) {
        MyInteger a = new MyInteger(0);
        System.out.println(a.increment());
    }
}

你看,你只能为你自己的类实现方法,不能为现有的类或像int.

于 2012-04-16T13:27:54.550 回答
0

我不认为你可以用它来返回值,除非你正在创建一个这样的新类:

class Increment1
{
    private int a;
    public int increment2(int a)
    {
        this.a=a;
        return this.a + 1;
    }
}

public class Increment
{

    static Increment1 b = new Increment1();

    public static void main(String[] args)
    {
        int a = 0;
        System.out.println(b.increment2(a));
    }
}
于 2012-04-16T13:35:24.323 回答
-1

这指的是类的当前实例,而不是特定的成员。

您想要增加一个属性(我猜是 long 或 int 类型),而不是您的增量类的实例(顺便说一下,应该是 Increment)。

像这样的东西会起作用:

public class increment {

private int innerValue = 0;

int increment() {
    innerValue+=1
    return innerValue; // aka this++
}

public static void main(String[] args) {
    increment a = new increment()
    System.out.println(a.increment());
}
}
于 2012-04-16T13:23:14.350 回答