我已经在这个项目上工作了一个星期,并且无法弄清楚我做错了什么。它应该接受一个五位数字,然后将数字与每个数字之间的三个空格分开。到目前为止它所做的一切都不起作用,然后吐出一系列红色咒骂,基本上说它不起作用。
有人能指出我正确的方向吗?
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);
}
}
答案 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
答案 1 :(得分:0)
你有几个问题:
getnum
没有做任何事情。虽然它确实从用户那里获得了输入,但它从不对它做任何事情,因此实际上并没有帮助。相反,您应该返回一个int,它将存储在名称中的变量中。Integer.parseInt
用于接受字符串作为输入,并尝试将其转换为整数。如果你尝试给它一个无效的数字,它会抛出一个错误。 1 2 3 4 5
永远不会是一个数字,所以这就是你的程序无法运行的原因。无论如何,你想要反过来 - 你想把一个数字转换成一个字符串。separate_number
返回的字符串做任何事情。 总而言之,您的代码的更正版本可能如下所示:
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!
}