Java 返回要传递给另一个方法的变量

Java 返回要传递给另一个方法的变量,java,methods,Java,Methods,我在这个项目上工作了一个星期,不知道我做错了什么。它应该接受一个五位数的数字,然后在每个数字之间用三个空格分隔数字。到目前为止,它都不起作用,然后吐出一行红色的咒语,基本上说它不起作用 谁能给我指出正确的方向吗 import java.util.*; public class program1 { static Scanner input = new Scanner (System.in); public static void main (String [] args)

我在这个项目上工作了一个星期,不知道我做错了什么。它应该接受一个五位数的数字,然后在每个数字之间用三个空格分隔数字。到目前为止,它都不起作用,然后吐出一行红色的咒语,基本上说它不起作用

谁能给我指出正确的方向吗

import java.util.*;

public class program1
{
    static Scanner input = new Scanner (System.in);
    public static void main (String [] args)
    {
        // variables and stuff
        int num = 00000;

        getnum(); 

        separate_number(num);  

    }
    // methods are here
    public static void getnum()
    {
        int num;
        do{
            System.out.println("Please enter a five digit number");
            num = input.nextInt();
            if (num < 10000 || num > 99999)
            {
                System.out.println("The number is not five digits");
            }
        }while (num < 10000 || num > 99999);
    }

    public static int separate_number(int num)
    {
        int digit5, digit4, digit3, digit2, digit1;
        digit5 = num % 10;
        num = num / 10;
        digit4 = num % 10;
        num = num / 10;
        digit3 = num % 10;
        num = num / 10;
        digit2 = num % 10;
        num = num / 10;
        digit1 = num % 10;
        num = num / 10;
        return Integer.parseInt(+ digit1 + "   " + digit2 + "   " + digit3 + "   " + digit4 + "   " + digit5);
    }
}
函数解析一个数字字符串

Integer.parseInt(+ digit1 + "   " + digit2 + "   " + digit3 + "   " + digit4 + "   " + digit5)
不管你的数字是什么,都不是数字

Integer.parseInt(+ digit1 + "   " + digit2 + "   " + digit3 + "   " + digit4 + "   " + digit5)
此外,你在开始时有一个额外的加号,虽然合法,但没有用。它只是声明第一个数字是正数

要将一个数字分成若干段,请将其转换为字符串

(new Integer(theNumber)).toString()
并手动拆分字符串,使用,或者,可能是最好的:

System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
产出:35634646


中,您遇到了几个问题:

getnum不做任何事情。虽然它确实从用户那里获得了输入,但它从未对它做过任何事情,因此实际上没有帮助。相反,您应该让它返回一个int,并将其存储在name中的一个变量中。 parseInt意味着接受字符串作为输入,并尝试将其转换为整数。如果您尝试输入一个无效的数字,它将抛出一个错误。123445永远不会是一个数字,所以这就是你的程序不能工作的原因。在任何情况下,你都想反过来——你想把一个数字转换成一个字符串。 您从未对从单独的_编号返回的字符串执行任何操作。 综上所述,代码的更正版本可能如下所示:

import java.util.*;

public class program1
{
    static Scanner input = new Scanner (System.in);
    public static void main (String [] args) {
        int num = getnum(); 
        System.out.println(separate_number(num));
    }

    public static int getnum() {
        int num;
        do {
            System.out.println("Please enter a five digit number");
            num = input.nextInt();
            if (num < 10000 || num > 99999) {
                System.out.println("The number is not five digits");
            }
        } while (num < 10000 || num > 99999);
        return num;
    }

    public static String separate_number(int num) {
        int digit5, digit4, digit3, digit2, digit1;
        digit5 = num % 10;
        num = num / 10;
        digit4 = num % 10;
        num = num / 10;
        digit3 = num % 10;
        num = num / 10;
        digit2 = num % 10;
        num = num / 10;
        digit1 = num % 10;
        num = num / 10;
        return digit1 + "   " + digit2 + "   " + digit3 + "   " + digit4 + "   " + digit5;
    }
}

您可以像这样简单地提取java中整数的数字,并对其执行任何操作:

public static void getnum()
{
    int num;
    do{
        System.out.println("Please enter a five digit number");
        num = input.nextInt();
        if (num < 10000 || num > 99999)
        {
            System.out.println("The number is not five digits");
        }
    }while (num < 10000 || num > 99999);
}

public static int separate_number(int num)
{
    String numStr = num +"";
    String[] digits = numStr.split("");
    String separatedDigits = "";
    for (String s: digits) {
        separatedDigits += s + " ";
        System.out.println(s);
    }
    // you can return separatedDigits just change the type of the method to String
    return Integer.parseInt(numStr);//Very nonesense!
}

缩进代码,使其不完全不可读。为什么你认为一个带空格的整数是一个东西?它不起作用不是一个有用的描述。请至少给出一个示例输入和观察到的输出。您是否试图将数字分隔为字符串?Integer.parseInt将无法处理代码中的输入。我看到的另一个问题是,getNum方法实际上没有返回用户输入,因此可以将其传递给separate_number方法。为什么要这样做?返回整数.parseInt+digit1++digit2++digit3++digit4++digit5;是的,你的分居者。。。方法应返回字符串,而不是无法解析的数字。