2014-11-23 37 views
-1

我正在處理一個提示用戶輸入一個整數的分配,並用空格分隔的數字顯示該整數,並提供這些數字的總和。我有這個工作,但我個人的數字顯示形式的第一個最後一位數字。我怎樣才能讓它顯示從第一個到最後一個數字?如何顯示整數輸入的個別數字?

這是我到目前爲止有:

import java.util.*; 

public class SeparateAndSum{ 
    static Scanner console = new Scanner(System.in); 

    public static void main(String[] args) 
    { 
     int num, temp, sum; 

     System.out.print("Enter a positive interger: "); 
     num = console.nextInt(); 
     System.out.println(); 

     temp = num; 

     sum = 0; 

     do 
     { 
     temp = num % 10;  
     sum = sum + num % 10; 

     num = num/10;  
     System.out.print(" " + temp + " "); 
     }while (num > 0); 

     System.out.println("The sum of the digits = " + sum); 
    } 
} 
+0

'INT溫度=(int)的(NUM/Math.Pow(10,Math.Log10(NUM)) );'會返回第一位數字。想想如何在循環中使用它。 – Maroun 2014-11-23 19:39:25

+0

你的代碼對我來說似乎沒問題。 – Junaid 2014-11-23 19:42:31

+0

請注意,''JAVA編程,我卡住了'是一個StackOverflow問題的可怕標題,因爲它告訴我們什麼都沒用。我們已經知道你被困住了,否則你不會問一個問題,並且我們已經知道它涉及Java,因爲你的問題有一個Java標記。將來,請考慮使用更多信息豐富的問題​​標題,這些標題總結您的實際問題。這樣做會幫助你獲得更好的幫助。 – 2014-11-23 20:00:10

回答

1

一種選擇是使用String#valueOf(Integer)方法。

int input = 12345; 

String inputStr = String.valueOf(input); 

for(char c : inputStr.toCharArray()) { 
    // Print out each letter. 
} 
+0

我們還沒有得到數組。 – Terri 2014-11-23 19:39:51

0

如果使用String.valueOf方法(12345)

就可以輕鬆反轉字符串與在這個庫中的方法:

https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#reverse(java.lang.String)

StringUtils.reverse(String.valueOf(input)); 
+0

我去了網站,扭轉字符串會很好,除非我需要每個數字之間有一個空格。我仍在研究... – Terri 2014-11-23 19:57:11

+0

您可以簡單地使用您的方法,並在打印數字的行上添加它們到一個字符串,然後您可以將其反轉。 String s = s +「」+ temp – Tobi 2014-11-23 19:59:00

+0

我一直在嘗試很多不同的東西,所以我比以前更困惑。我現在想的是使用你建議的方法字符串,並在提取數字和求和之前將其反轉。但我不熟悉使用字符串方法。我查看了該網站,但我不明白如何以字符串的形式獲取輸入內容,然後將其轉換爲整數。我不知道我是否比這更難做,或者我是否找不到我書中的步驟。 – Terri 2014-11-23 21:29:30

0

下面是解

import java.util.*; 

public class SeparateAndSum{ 
    static Scanner console = new Scanner(System.in); 

    int num, temp, sum; 

    System.out.print("Enter a positive interger: "); 
    num = console.nextInt(); 
    System.out.println(); 

    temp = num; 

    sum = 0; 
    ArrayList<Integer> values = new ArrayList<>(); 

    do 
    { 
     temp = num % 10;  
     sum = sum + num % 10; 

     num = num/10;  
     values.add(temp); 
    }while (num > 0); 
    Collections.reverse(values); 
    Iterator<Integer> it = values.iterator(); 
    while(it.hasNext()){ 
     System.out.println(" "+it.next()+" "); 
    } 
    System.out.println("The sum of the digits = " + sum); 
} 
} 

BTW,你應該有導入ArrayList

+0

我們還沒有得到數組。 – Terri 2014-11-23 20:04:29

+0

然後,我會建議你使用'字符串'輸入,然後操縱它。 – Junaid 2014-11-23 20:06:29

0

我會強烈建議把數量爲一個字符串,然後閱讀它,分析它,和使用,數你想。如下,

int input = 12345; 
String inputString = input + ""; 

int sum = 0; 
for (int i = 0; i < inputString.length(); i++) { 
    sum += Integer.parseInt(inputString.charAt(i) + ""); 
} 

System.out.println(sum); 

然而另一種方式,而不是作爲蠻..

int input = 12345; 

int sum = 0; 
while (input > 0) { 
    int i = (input + "").length() - 1; 

    int n = (int) (input/Math.pow(10, i)); 
    input -= (int) (n * Math.pow(10, i)); 

    sum += n; 
} 

System.out.println(sum); 
相關問題