[英]How do you convert a number and store it in a char array and then convert the char array to String so that it prints the integer?
我有一個存儲有四個字符的char數組,我需要在char數組中添加一個整數,然后在if的末尾添加.txt,然后將整個內容呈現為字符串,以便可以使用它來創建文件對象。 但是,當我運行整個過程時,它不起作用。 使用println輸出每一步發生的事情,它向我展示了存儲在char數組中的數字正按以下方式打印為字符串:(0001)而不是僅此(1)。 為什么會這樣,我該如何解決? 我在這里鍵入了一段代碼的簡短版本來演示該問題。 下面的printline語句的輸出是:temp 0001 .txt而不是temp1.txt,這是我想要的。 謝謝你的盡心幫助。
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);
}
}
您無需費心使用字符數組。 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
周圍的括號。 不帶括號, i
和1
分別轉換為字符串,然后被壓縮為字符串。 例如,如果i
為5
,則不帶括號的結果為51
,而帶括號的結果為6
。
獎勵 :您可以像這樣用0
填充數字部分:
String newName = baseName + String.format("%04d", i+1) + extension;
這樣,如果長度小於4,則編號的部分將填充零以使長度為4。但是,如果長度小於或等於4,則不會剝離數字。
例如: 45
變為0045
, 12345
入住12345
您嘗試分配給emp[count]
值為ascii值1
你想要的是一個ASCII值1
是49,所以你可以做
emp[count] = 49;
要么
emp[count] = 48 + 1;
要么
emp[count] = '1';
編輯根據您的注釋,如果您要執行的所有操作均創建了新文件名,則甚至不需要這些arrays
。
請參閱@ Code-Apprentice的答案
String file = base + 1 + extension;
請記住, +
運算符專門與字符串配合使用。 最重要的是,當+
的另一個操作數是String
時,任何內容都會自動轉換為String
。 因此,您可以在一行中完成所有這些操作:
String file = base + 1 + extension;
請注意,此處1不是特殊的。 這是一個類型為int
的值。 因此,您可以輕松地將其替換為變量名。
這將插入值為1
而不是字符1的char。
emp[count] = (char)1;
嘗試以下方法:
emp[count] = '1';
編輯:如果您想要更動態
int i = ...
emp[count] = (char) ('0'+ i);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.