JAVA如何获得14个基于值的总和?
目前,我正在尝试编写一个程序,它会要求用户输入一个基于14的号码,然后它会输出一个基于14的号码。提示如下。。。 “外来物种使用以14为基础的编号系统。它们的10位数字,0到9,与我们的相同 十进制。他们用A、J、Q和K分别表示十进制的10、11、12和13。他们 请您编写一个Java程序,对两个数字求和。 程序应该提示用户输入两个以14为基础的数字,然后显示这些数字的总和 两个数字。输出也应该以14为基础。(他们不愿意学习我们的十进制!) 例如,如果输入为17和96,则输出应为AK。” 当我进入17和96时,它射出AK,这就是我想要的。当我输入类似1Z的内容时,它会弹出“您的第一次/第二次输入无效”,这也是预期的结果。但是当我输入1A或j1之类的东西时,它会给我同样的错误“你的第一次/第二次输入无效”,尽管它应该通过。我觉得我在validateinput方法中做错了什么,但我不太确定。任何帮助都将不胜感激。谢谢 谢谢 在这里输入代码JAVA如何获得14个基于值的总和?,java,if-statement,for-loop,while-loop,static-methods,Java,If Statement,For Loop,While Loop,Static Methods,目前,我正在尝试编写一个程序,它会要求用户输入一个基于14的号码,然后它会输出一个基于14的号码。提示如下。。。 “外来物种使用以14为基础的编号系统。它们的10位数字,0到9,与我们的相同 十进制。他们用A、J、Q和K分别表示十进制的10、11、12和13。他们 请您编写一个Java程序,对两个数字求和。 程序应该提示用户输入两个以14为基础的数字,然后显示这些数字的总和 两个数字。输出也应该以14为基础。(他们不愿意学习我们的十进制!) 例如,如果输入为17和96,则输出应为AK。” 当我进
import java.util.Scanner;
public class H5_hieu {
public static void main(String[] args)
{
System.out.println("Please enter a 14 base value: ");
Scanner input = new Scanner(System.in);
String first = input.nextLine();
String second = input.nextLine();
boolean isFirstValid = validateInputs(first);
boolean isSecondValid = validateInputs(second);
while (!isFirstValid || !isSecondValid){
if (!isFirstValid){
System.out.println("Your first input is invalid");
}
if (!isSecondValid){
System.out.println("Your second input is invalid");
}
System.out.println("Please enter a 14 base value: ");
first = input.nextLine();
second = input.nextLine();
isFirstValid = validateInputs(first);
isSecondValid = validateInputs(second);
}
int firstInDecimal = convertFrom14To10(first.toUpperCase());
int secondInDecimal = convertFrom14To10(second.toUpperCase());
System.out.println(convertFrom10To14( firstInDecimal + secondInDecimal));
}
public static boolean validateInputs(String input) {
for ( int i = 0;i < input.length(); i++){
char currentChar = input.charAt(i);
if (!Character.isDigit(currentChar) && (currentChar != 'A' || currentChar != 'J' || currentChar != 'Q' || currentChar != 'K' || currentChar != 'a' || currentChar != 'j' || currentChar != 'q' || currentChar != 'k')) {
return false;
}
}
return true;
}
public static String convertFrom10To14(int input){
boolean done = false;
int quotient = input;
int remainder = 0;
String result = "";
while (!done) {
remainder = quotient % 14;
quotient = quotient / 14;
//System.out.println("quotient: " + quotient + " remainder: " + convertDigit(remainder));
result = convertDigit(remainder) + result ;
if (quotient == 0)
done = true;
}
return result;
}
public static int convertFrom14To10(String input) {
int length = input.length();
int result = 0;
for(int i = 0; i < length; i++){
char currentChar = input.charAt(i);
//System.out.println("Character at index " + i + " : " + currentChar);
int valueOfChar = getCoeff(currentChar);
// System.out.println("Decimal value of currentChar: " + valueOfChar);
int power = length - 1 - i;
//System.out.println("Power: " + power);
result = result + (valueOfChar * (int)Math.pow(14, power));
//System.out.println();
}
// System.out.println("Decimal of " + input + " is: " + result + "\n");
return result;
}
public static int getCoeff(char character) {
if (character == 'A'){
return 10;
} else if (character == 'J'){
return 11;
} else if (character == 'Q'){
return 12;
} else if (character == 'K'){
return 13;
} else {
return Integer.parseInt(String.valueOf(character));
}
}
public static String convertDigit( int number)
{
if (number == 10){
return "A";
} else if ( number == 11){
return "J";
} else if (number == 12){
return "Q";
} else if (number == 13){
return "K";
} else {
return String.valueOf(number);
}
}
}
import java.util.Scanner;
公共级H5_hieu{
公共静态void main(字符串[]args)
{
System.out.println(“请输入14个基值:”);
扫描仪输入=新扫描仪(System.in);
String first=input.nextLine();
String second=input.nextLine();
布尔值isFirstValid=验证输入(第一);
布尔值isSecondValid=验证输入(秒);
而(!isFirstValid | | |!isSecondValid){
如果(!isFirstValid){
System.out.println(“您的第一次输入无效”);
}
如果(!isSecondValid){
System.out.println(“您的第二次输入无效”);
}
System.out.println(“请输入14个基值:”);
first=input.nextLine();
second=input.nextLine();
isFirstValid=验证输入(第一);
isSecondValid=验证输入(秒);
}
int firstInDecimal=convertfrom14到10(first.toUpperCase());
int secondInDecimal=convertfrom14到10(second.toUpperCase());
System.out.println(从10转换为14(firstInDecimal+secondInDecimal));
}
公共静态布尔验证输入(字符串输入){
对于(int i=0;i
您的validateInput()方法确实是问题所在。“| |”运算符是逻辑or,这意味着任何带字母的输入都将失败。我想您需要“&&”运算符,它是一个逻辑and。您的问题是什么。您是如何实现从14到10的转换和从10到14的转换的?请将sameChange(currentChar!=“A”| currentChar!=“J”| ||……)
上传到(currentChar!=“A”&¤tChar!=“J”&&……)
。这很有意义,而且成功了!非常感谢你的帮助!