Java 小程序-我如何使这段代码使用字符串而不是字符?
我正在慢慢地编写一个程序,将十六进制数转换成十进制数。我对阅读已完成的、众所周知的代码不感兴趣,因为我想自己做。我有个主意,但有什么事妨碍了我Java 小程序-我如何使这段代码使用字符串而不是字符?,java,arrays,string,char,Java,Arrays,String,Char,我正在慢慢地编写一个程序,将十六进制数转换成十进制数。我对阅读已完成的、众所周知的代码不感兴趣,因为我想自己做。我有个主意,但有什么事妨碍了我 import java.util.Scanner; public class Test{ public static void main(String[] args){ Scanner input = new Scanner(System.in); String any = input.nextLine();
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String any = input.nextLine();
char[] cArray = any.toCharArray();
for(int i=0; i<cArray.length; i++){
System.out.print(cArray[i]+" ");
}
}
}
Input: ab12
Output: a b 1 2
问题是我想用
10
替换a
,10
不再是字符,因为它由两个字母组成。这就是为什么我想知道如何使此代码使用字符串而不是字符?而不是替换cArray
中的值,我将创建一个StringBuilder,并将所有值附加到该字符串中(因为您可能只想打印结果):-
StringBuilder str=new StringBuilder();
对于(int i=0;i提示
'a' - 87 = 10
因此,您可以使用:
(int) cArray[i] - 87
因为:
(int)'a' = 97
希望您能理解。我猜您会希望在提取转换后的十进制数字后访问它们。使用字符串列表存储您的输出
Scanner in = new Scanner(System.in);
String any = in.nextLine();
char[] cArray = any.toCharArray();
List<String> output = new ArrayList<String>();
for(int i=0; i<cArray.length; i++){
if(cArray[i] >= 'a'){ // Strore a,b,c,d,e
output.add(String.valueOf(10+(cArray[i]-'a')));
} else { // Store numbers
output.add(String.valueOf(cArray[i]));
}
}
for(String s : output){
System.out.println(s);
}
Scanner-in=新的扫描仪(System.in);
字符串any=in.nextLine();
char[]cArray=any.toCharArray();
列表输出=新的ArrayList();
对于(inti=0;i=a'){//Strore a,b,c,d,e
output.add(String.valueOf(10+(cArray[i]-'a'));
}else{//存储编号
output.add(String.valueOf(cArray[i]);
}
}
for(字符串s:输出){
系统输出打印项次;
}
让我们看看这个:
if (cArray[i] == 'a') {
cArray[i] = '10';
}
这是无效的Java,原因如下:
'10'
不是有效的文本。它不是字符文本,因为有两个字符…而字符文本只能表示单个字符。它也不是字符串文本,因为字符串文本用双引号括起来;例如“10”
假设我们将'10'
更改为“10”
,这仍然是错误的。现在的问题是cArray[i]=“10”
正在将字符串对象分配到字符数组中
下一个问题是无法“插入”到数组中。数组的大小是固定的。数组的大小不能更改(除非创建新数组)。只能在给定位置更新字符
但这在这里也不起作用。您可以尝试将字符向右移动,以便为额外的字符留出空间。但是,数组中没有足够的空间容纳所有字符
简而言之,您需要将修改/重写的字符表示为新的数据结构。StringBuilder
类是最合适的。有关使用StringBuilder
的解决方案,请参阅@SteveSmith的答案,以使您的代码使用字符串而不是字符将字符数组更改为字符串数组:
Scanner input = new Scanner(System.in);
String any = input.nextLine();
//char[] cArray = any.toCharArray(); // first change this line
String [] cArray = any.split(""); // split input into single characters as string
for(int i=0; i<cArray.length; i++){
System.out.print(cArray[i]+" ");
}
for(int i=0; i<cArray.length; i++){
if(cArray[i].equals("a")){ // use String.equals("anotherString") method to check equality
cArray[i] = "10";
}
System.out.print(cArray[i]+" ");
}
扫描仪输入=新扫描仪(System.in);
字符串any=input.nextLine();
//char[]cArray=any.toCharArray();//首先更改此行
String[]cArray=any.split(“”;//将输入拆分为单个字符作为字符串
对于(int i=0;i简单有效)。
if (cArray[i] == 'a') {
cArray[i] = '10';
}
Scanner input = new Scanner(System.in);
String any = input.nextLine();
//char[] cArray = any.toCharArray(); // first change this line
String [] cArray = any.split(""); // split input into single characters as string
for(int i=0; i<cArray.length; i++){
System.out.print(cArray[i]+" ");
}
for(int i=0; i<cArray.length; i++){
if(cArray[i].equals("a")){ // use String.equals("anotherString") method to check equality
cArray[i] = "10";
}
System.out.print(cArray[i]+" ");
}