因此,我的问题是我似乎无法在代码中添加一个空白功能



我想在我的代码中插入一个void函数。

import java.util.*;
public class javellana {    
  public static void main(String[] args) {      
    Scanner scan = new Scanner(System.in);
    System.out.println("Input String: ");
    String str = scan.nextLine();
    System.out.println("Input character: ");
    char str1 = scan.next().charAt(0);
    int num = str.length();         
    int i;
    for (i = num - 1; i >= 0; i--) {            
      if (str1 == str.charAt(i)) {
        System.out.println("The character " + str1 + " you intput is " + i);
        break;
      }
    }                                                                       
  }
}

那是我的代码,我想添加一个从" for"开始的void函数。我希望for循环能够处于空隙功能中,但我似乎无法做到。我该如何解决?

public class javellana {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Input String: ");
        String str = scan.nextLine();
        System.out.println("Input character: ");
        char str1 = scan.next().charAt(0);
        int num = str.length();         
        tt(num,str1,str);
    }
    static void tt(int num , char str1, String str)
    {
        for(int i = num - 1; i >= 0; i--) {
            if (str1 == str.charAt(i)) {
                System.out.println("The character " + str1 + " you intput is " + i);
                break;
        }
    }
}
}

除了代码外,您想从中实现的目标仍然 不清楚

您可以将void方法添加为静态方法,然后直接在主方法中使用它。

public class javellana {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Input String: ");
        String str = scan.nextLine();
        System.out.println("Input character: ");
        char str1 = scan.next().charAt(0);
        int num = str.length();
        int i;
        func(str, str1);
    }
    static void func(String str, char str1) {
        int num = str.length();
        for (int i = num - 1; i >= 0; i--) {
            if (str1 == str.charAt(i)) {
                System.out.println("The character " + str1 + " you intput is " + i);
                break;
            }
        }
    }
}

编辑:

您可以简单地使用 System.out.println(str.lastIndexOf(str1));行,而不是整个循环以解决问题

public class javellana {
  String str;
  char str1;
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("Input String: ");
        str = scan.nextLine();
        System.out.println("Input character: ");
        str1 = scan.next().charAt(0);
        func(); // call function here

    }
    static void func() {
        int num = str.length();
        for (int i = num - 1; i >= 0; i--) {
            if (str1 == str.charAt(i)) {
                System.out.println("The character " + str1 + " you intput is " + i);
                break;
            }
        }
    }
}

尝试更改

如果

添加void函数

表示在public static void main(String){};

中添加(声明)另一种方法(函数)

那么不允许。

您能做的是;创建匿名类或功能接口(Java 8)。这不是您想要的,而是某种程度上..

main() static 方法,因此只能从中使用 static> static 方法。

您可以使用 String.lastIndexof() method。

而不是用于循环。
public static void main(String... args) {
    try (Scanner scan = new Scanner(System.in)) {
        System.out.print("Input String: ");
        String str = scan.nextLine();
        System.out.print("Input character: ");
        char ch = scan.next().charAt(0);
        lastIndexOf(str, ch);
    }
}
private static void lastIndexOf(String str, char ch) {
    int i = str.lastIndexOf(ch);
    if (i >= 0)
        System.out.println("The character " + ch + " you input is " + i);
}

您无法在方法中创建方法。目前,您是主要方法。
但是您可以从方法中调用所需的多个方法。

但是有一些限制。您无法在静态方法中调用非静态方法。因此,@pkgajulapalli答案可能是正确的。

最新更新