我正在完成一项任务,我必须有一个选项,询问用户是否要从任何基地转换为任何其他基地。以下是教练给我们的主要内容:
import java.util.*;
public class CSCD210Lab21
{
public static void main(String [] args)
{
Scanner kb = new Scanner(System.in);
int choice;
do
{
choice = Lab21Methods.menu(kb);
switch(choice)
{
case 1: Lab21Methods.convert(kb, 10, 2, '0', '1');
break;
case 2: Lab21Methods.convert(kb, 10, 8, '0', '1', '2', '3', '4', '5', '6', '7');
break;
case 3: Lab21Methods.convert(kb, 10, 16, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
break;
case 4: int fromBase = Lab21Methods.readBase(kb, "from");
char [] fromBaseValues = Lab21Methods.readBaseValues(kb, fromBase);
int toBase = Lab21Methods.readBase(kb, "to");
char [] toBaseValues = Lab21Methods.readBaseValues(kb, toBase);
Lab21Methods.convert(kb, fromBase, fromBaseValues, toBase, toBaseValues);
break;
default: System.out.println("Thanks for using my silly base converter");
}// end switch
}while(choice != 5);
}// end main
}// end class
我关注的主要部分是switch语句中的case 4。以下是我到目前为止的情况:
public static char [] readBaseValues(Scanner kb, int baseVal)
{
kb = new Scanner(System.in);
System.out.print("Enter Base: ");
baseVal = kb.nextInt();
kb.nextLine();
char valArray[] = new char[baseVal];
for(int i=0; i < valArray.length; i++)
{
System.out.print("Enter Base Value: ");
valArray[i] = kb.nextLine().charAt(0);
}
System.out.print(valArray);
return valArray;
}
public static int readBase(Scanner kb, String type)
{
System.out.println();
System.out.print("Enter Base To Convert "+type+" : ");
int num = kb.nextInt();
return num;
}
我不知道如何在不使用ParseInt的情况下将基数10转换为基数2。他说如果我们使用ParseInt,我们得到0分。我还怎么办?
答案 0 :(得分:0)
我认为最好的办法就是使用低级别的角色。
你要做的是转换char值,这也是一个低级别的数字。所以:
(int) '0'==48 //true
你能做的就是说
String in = "1234";
int sum = 0;
for(char c: in.toCharArray())
sum += ((int) c)-48;
对于base的转换,您使用模运算。在Java中,您使用'%'操作:9%5 = 4。
例如,要将9转换为基数5,我们可以:
每次传播前一个分割的剩余部分。 base-5的总数现在是'14',你只需要互相编写模数运算。
答案 1 :(得分:0)
您必须实施convert()
作为您自己的parseInt()
和String.valueOf()
版本。方法参数给出了输入和输出的基础,表示这些数字的符号,以及它们在数字数组中的索引形式的符号的位置值。
您需要逐个字符处理输入字符,查找每个字符的位置值,并使用基数和位数值构建数值。然后,您需要执行相反操作,将结果数字转换为输出基数和符号中表示的数字字符串。
由于数字符号是作为输入给出的,因此您不应假设它们的char
值与相应的位置值之间存在任何特定关系(例如,程序似乎不会限制为使'0'为数字有地方价值0)。