2014-04-20 87 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! 
} 
相關問題