有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java新方法,<identifier>预期错误

我正试图为一项任务编写一个程序,该程序将基于两个绝对参数确定某人是否有资格获得经济支持。为了实现这一点,我创建了三个新方法,目前我发现了一个我无法理解的错误。错误在代码的这一部分显示“预期标识符”(在底部:

静态空隙测量(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);
  }
}

我已经尝试了很长一段时间在网上找到答案,但是在大多数情况下,当人们遇到这个错误时,他们忘记了写一个main方法。正如你所看到的,我没有。提前感谢–我对Java真的很陌生,非常感谢您的帮助


共 (1) 个答案

  1. # 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的评论:

    您的代码还有许多其他问题。如果最初定义了wherei的范围(在main),则metodeAldermetodeHjemme中的变量i在外部。如果确实需要在方法内部修改此变量,则必须将其声明为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不可见。相反,外部范围中定义的变量对所有内部范围都可见,因为它们也是外部范围的一部分