Java 所以我的问题是,我似乎不能在代码中添加一个void函数

Java 所以我的问题是,我似乎不能在代码中添加一个void函数,java,Java,我想在代码中插入一个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.ou

我想在代码中插入一个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循环在一个空函数中,但我似乎做不到。如何修复此问题?

您可以添加一个void方法作为static,并直接在main方法中使用它

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))行,而不是问题的整个for循环

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 main(String){}
中添加(声明)另一个方法(函数)

那么这是不允许的

你能做的是;创建一个匿名类或函数接口(Java8)。这并不完全是你想要的,但不知怎么的

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

您可以使用String.lastIndexOf()方法代替for循环

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);
}

不能在方法中创建方法。 目前,您使用的是main方法。
但是您可以从一个方法中调用任意多个方法

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

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函数”的意思