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;是的,你的分居者。。。方法应返回字符串,而不是无法解析的数字。