2016-02-17 79 views
0

我有一個存儲四個字符的char數組,我需要向char數組添加一個整數,然後將.txt添加到if的末尾,然後將整個東西渲染爲一個字符串,以便我可以使用它來創建一個文件對象。但是當我運行整個過程時,它不起作用。使用println輸出每一步發生的事情,它告訴我存儲在char數組中的數字正在打印爲字符串,如下所示:(0001)而不是this(1)。爲什麼是這樣,我如何解決它?我在這裏打印了一小段代碼來演示這個問題。下面的printline語句的輸出是這樣的:temp 0001 .txt,而不是temp1.txt,這正是我想要得到的。謝謝你盡你所能的幫助。如何轉換數字並將其存儲在char數組中,然後將char數組轉換爲String以便打印整數?

public class Test { 
    public static void main(String[] args) { 
    int count = 4; 
    char[] temp = new char[count + 5]; 
    char[] base = new char[] {'t', 'e', 'm', 'p'}; 

    char[] extension = new char[] {'.', 't', 'x', 't'}; 
    for (int i = 0; i < 4; i++) 
    temp[i] = base[i]; 

    temp[count] = (char)1; 
    for (int k = 0; k < 4; k++) 
    temp[count + 1 + k] = extension[k]; 

    String file = new String(temp); 

    System.out.println(file); 

    } 
} 
+0

有沒有你要保持它作爲一個數組的原因嗎?我的意思是你可以做's = new String(base)+ Integer.toString(theNumberToAdd)+ new String(extension);' –

+0

@FabianN。而對'Integer.toString()'的顯式調用在這裏甚至是可選的。 –

+0

@代碼學徒我有點太在意,因爲我正在做很多Javascript atm,並且不想在Java中運行'number ='6'* 1' –

回答

0

這將插入字符與價值1代替字符1.

emp[count] = (char)1; 

試試這個:

emp[count] = '1'; 

編輯: 如果你想要更動態

int i = ... 
emp[count] = (char) ('0'+ i); 
+0

在實際的程序中我讓我有通過循環創建具有不同數字(temp1.txt,temp2.​​txt ...等)的多個文件名,我該如何使它在這種情況下工作,因爲我需要根據鑄造一個文件名字符串來指定數字int變量從一個for循環變成一個數字? – JimboSakahana

+0

所以它會是temp [count] =(char)i;其中我是for循環中的計數器 – JimboSakahana

+0

我編輯了我的答案以反映 – MartinS

1

您嘗試分配給emp[count]的值是1

你想要的是一個1的ASCII值是49的ASCII值,這樣你就可以做

emp[count] = 49; 

emp[count] = 48 + 1; 

emp[count] = '1'; 

編輯根據你的意見,如果你所要做的只是創建一個新的文件名,那麼這些arrays甚至不需要。

請參閱從@代碼學徒答案

String file = base + 1 + extension; 
1

記住+運營商字符串concatentate他們的工作特別。最重要的是,當+的另一個操作數是String時,任何東西都會自動轉換爲String。所以你可以在一條線上做所有這些:

String file = base + 1 + extension; 

請注意,1在這裏並不特別。這是一個值爲int的值。因此,您可以輕鬆地用變量名替換它。

2

你不需要把所有的麻煩與字符數組。 Java使用String爲您完成了大部分工作。試試這個更簡單的代碼,創建10個文件名。我想你正在嘗試創建一些具有相同基本名稱的帶有數字名稱的文件。

public class Test { 
    public static void main(String[] args) { 
    String baseName = "temp"; 
    String extension = ".txt"; 

    // create 10 file names 
    for(int i=0; i<10; i++) { 
     String newName = baseName + (i+1) + extension; 
     System.out.println(newName); 
    } 
    } 
} 

注意圍繞i+1的括號。沒有括號,i1被分別強制轉換爲字符串,然後再與字符串進行連接。例如,如果i5,那麼沒有括號就給出了51,而括號則是6

獎金: 可以墊0就像這個數字部分:

String newName = baseName + String.format("%04d", i+1) + extension; 

這樣,編號部分用0來填充,使長度爲4,如果長度小於4。但是,如果長度爲4或大於4,則數字不會被剝離。

例如:45成爲004512345保持12345

相關問題