我是Java新手,正在编写一个简单的类赋值代码。这是:
public class Digit {
int value;
int end;
public Digit(int numSystem, int value) {
this.end = numSystem;
this.value = value;
}
public int getValue(){
return value;
}
public boolean increment(){
while (value < end){
value +=1;
}
if(value == end){
value = 0;
return true;
}
else{
return false;
}
}
public String toString(){
if (value < 9){
return(String.valueOf(value));
}
if(value == 10){
return("A");
}
if(value ==11){
return("B");
}
if(value == 12){
return("C");
}
if(value == 13){
return("D");
}
if(value == 14){
return("E");
}
if(value == 15){
return("F");
}
if(value == 16){
return("G");
}
if(value == 17){
return("H");
}
if(value == 18){
return("I");
}
if(value == 19){
return("J");
}
if(value == 20){
return("K");
}
if(value == 21){
return("L");
}
if(value == 22){
return("M");
}
if(value == 23){
return("N");
}
if(value == 24){
return("O");
}
if(value == 25){
return("P");
}
if(value == 26){
return("Q");
}
if(value == 27){
return("R");
}
if(value == 28){
return("S");
}
if(value == 29){
return("T");
}
if(value == 30){
return("U");
}
if(value == 31){
return("V");
}
if(value == 32){
return("W");
}
if(value == 33){
return("X");
}
if(value ==34){
return("Y");
}
else{
return("Z");
}
}
}
现在,我认为“toString()”方法看起来很糟糕。我在考虑如何做同样的事情,但要提高效率。所以,我想我可以使一个ArrayList保存“value”的值,然后遍历它并为其分配一个字母。也许这是一个好主意?
如果是这样,我该怎么做?因为我每次尝试都会收到错误。
感谢大家的时间!
答案 0 :(得分:9)
你可以用以下方法简化它:
public String toString(){
if (value <= 9) return String.valueOf(value);
else if (value >= 10 && value <= 35) return "" + (char) ('A' + value - 10);
else return "Z";
}
请注意,在您的代码toString
中,如果Z
可能会出错,则会返回value == 9
。
答案 1 :(得分:1)
你可以在开始时生成一个数组,在你的ToString中你只需要在数组中查找
public String toString(){
return arr[value];
}
毋庸置疑,您必须拥有值为
的数组public class Digit {
static String[] arr = {"0","1",...,"A","B",..."Z"};
...
答案 2 :(得分:0)
您可以查看switch
语句。
这段代码也可以完成工作
public String toString(){
if (value < 9){
return String.valueOf(value);
} else {
// Create a char array with values from a to z
char[] chars = new char[26];
int currentChar = 97;
for (int i = 0; i < chars.length; i++){
chars[i] = (char) currentChar;
currentChar++;
}
return chars[value - 10];
}
}
答案 3 :(得分:0)
增量可以减少为:
public boolean increment(){
while (value < end){
value +=1;
}
value = 0;
return true;
}
答案 4 :(得分:0)
您可以使用HashMap,然后可以存储成对的int以及相应的字符。然后,您可以使用myMap.get(30)
来检索字符,例如,这是所涵盖的字符值的大if语句。
答案 5 :(得分:0)
您可以将int转换为char。 'A'是65,所以你的输入值+ 55将是你的ASCII字符。