新方法,<identifier>预期错误

时间:2016-09-11 09:41:48

标签: java methods identifier

我试图编写一个程序(用于作业),它将根据两个绝对参数确定某人是否有资格获得经济支持。为了实现这一点,我创建了三种新方法,目前我只能犯一个我根本无法理解的错误。该错误表示&#34;标识符预期&#34;在这部分代码上(在底部:

static void metodeTekst(tekst)

这是我的代码:

import java.util.Scanner;

public class MinOppgave2a
{
  public static void main (String[] args)
  {
    Scanner in = new Scanner (System.in);
    String tastatur;

      System.out.println();
    System.out.println("\r\n" + "For aa kunne beregne ditt stoettegrunnlag, må du oppgi alderen din: ");
    tastatur = in.nextLine();
    int alder = Integer.parseInt(tastatur);
      System.out.println();
    System.out.println("\r\n" + "Bor du hjemme? Skriv 1 for «Ja», eller 2 for «Nei»: ");
    tastatur = in.nextLine();
    int hjemme = Integer.parseInt(tastatur);
      System.out.println();


    int i = 0;

    while (i < 2)
    {
        i = i + 0;
    }

    metodeAlder(alder);
    metodeHjemme(hjemme);

    System.out.println("Du vil faa full studiestoette!");

  }
  static void metodeAlder(int alder)
  {
    if (alder <= 18 || alder >= 45)
      i++;

    else
      metodeTekst(tekst);
  }
  static void metodeHjemme(int hjemme)
  {
    if (hjemme == 2)
      i++;

    else
      metodeTekst(tekst);

  }
  static void metodeTekst(tekst)
  {
    String tekst = ("Du vil faa redusert eller ingen studiestoette.");
    System.out.println(tekst);
  }
}

我已经尝试了一段时间在网上找到答案,但在大多数情况下,人们已经发现了这个错误,他们忘记写一个主要的方法。我没有,如你所见。在此先感谢 - 我对Java非常陌生,并感谢所有人的帮助!

1 个答案:

答案 0 :(得分:1)

您的方法metodeTekst是错误的。它应该是

static void metodeTekst()
{
    String tekst = "Du vil faa redusert eller ingen studiestoette.";
    System.out.println(tekst);
}

static void metodeTekst(String tekst)
{
    System.out.println(tekst);
}

但是你必须这样称呼它:

metodeTekst("Du vil faa redusert eller ingen studiestoette.");

编辑OP的评论:

您的代码还有许多其他问题。如果最初定义i的范围(metodeAlder),则metodeHjemmei中的变量main在外。如果您确实需要在方法中更改此变量,则必须将其声明为主体外的static字段。

除了一切编译好之后,这部分

 while (i < 2)
 {
     i = i + 0;
 }

毫无意义。您将永远处于无限循环中,因为您永远不会更改i,因此它始终为< 2。我会删除所有出现的i,因为它没有任何意义,并且在您的程序中根本不需要。

编辑2:

关于为什么编译器现在只抱怨i的问题:首先检查一下,如果所有方法签名都正确。由于它遇到了上一个错误(签名错误),因此无需进一步检查。现在您已经修复了它,编译器可以继续检查方法“内部”的语法。由于i仅在方法的范围之外定义,因此它不知道应该是什么i,因此是下一个编译器错误。

编辑3:

为了让我的解释更清楚,请看下面的例子:

{
    // Outer Scope
    {
        // Inner Scope A
    }
    {
        // Inner Scope B
    }
    {
        // Inner Scope C
    }
}

这里,三个内部范围A, B, C彼此隔离。因此,内部范围A中定义的变量对其他内部范围BC不可见。相反,外部作用域中定义的变量对所有内部作用域都是可见的,因为它们也是外部作用域的一部分。