2014-04-20 58 views
-3

我一直在这个项目上工作了一个星期,无法弄清楚我做错了什么。它应该接受一个五位数字,然后在每个数字之间用三个空格分隔数字。到目前为止,它所做的一切都不起作用,然后吐出一系列红色咒骂,基本上说它不起作用。返回一个变量传递给另一个方法

任何人都可以指向正确的方向吗?

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

缩进你的代码,所以它不是完全不可读的。 (为什么你认为一个带空格的整数是一个整数?) – geoffspear

+0

“这不起作用”不是一个有用的描述。请至少提供一个示例输入和观察输出。 –

+0

您是否试图以字符串形式分隔数字? Integer.parseInt不适用于代码中的输入。我看到的另一个问题是您的getNum()方法实际上不会返回用户输入,因此它可以传递给'separate_number'方法。 –

回答

0

您有几个问题:

  1. getnum什么也没做。虽然它从用户那里获得输入,但它从来不会做任何事情,所以实际上并没有帮助。相反,你应该让它返回一个int,你将存储在一个名字变量中。
  2. Integer.parseInt是为了接受一个字符串作为输入,并尝试并将其转换为一个整数。如果您尝试给它添加一个无效数字,它会发出错误。 1 2 3 4 5永远不会是一个数字,所以这就是为什么你的程序无法正常工作。在任何情况下,你都想以相反的方式 - 你想把一个数字转换成一个字符串。
  3. 你从不会对从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; 
    } 
} 
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

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! 
} 
相关问题