返回一个变量以传递给另一个方法

时间:2014-04-20 16:38:37

标签: java methods

我已经在这个项目上工作了一个星期,并且无法弄清楚我做错了什么。它应该接受一个五位数字,然后将数字与每个数字之间的三个空格分开。到目前为止它所做的一切都不起作用,然后吐出一系列红色咒骂,基本上说它不起作用。

有人能指出我正确的方向吗?

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

3 个答案:

答案 0 :(得分:0)

函数parseInt解析 数字的字符串。

Integer.parseInt(+ digit1 + "   " + digit2 + "   " + digit3 + "   " + digit4 + "   " + digit5)

无论您的数字是什么,"# # # # #"都不是数字。

此外,你在开头有一个额外的加号,虽然合法,但没用。它只是声明第一个数字是正数。

要将数字分成几部分,请将其转换为字符串

(new Integer(theNumber)).toString()

并手动拆分字符串,使用String.format(s,o...),或者最重要的是:

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

输出:35,634,646

来自this answer

答案 1 :(得分:0)

你有几个问题:

  1. getnum没有做任何事情。虽然它确实从用户那里获得了输入,但它从不对它做任何事情,因此实际上并没有帮助。相反,您应该返回一个int,它将存储在名称中的变量中。
  2. Integer.parseInt用于接受字符串作为输入,并尝试将其转换为整数。如果你尝试给它一个无效的数字,它会抛出一个错误。 1 2 3 4 5永远不会是一个数字,所以这就是你的程序无法运行的原因。无论如何,你想要反过来 - 你想把一个数字转换成一个字符串。
  3. 您永远不会对从separate_number返回的字符串做任何事情。
  4. 总而言之,您的代码的更正版本可能如下所示:

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

答案 2 :(得分:0)

您可以像这样简单地在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!
}