给出一个等式:
433+4H8= 871
H
可以是等式的。找到H的值并将其替换为给定的等式。
输出应为:
433+438=871
我已尝试过以下代码,但将字符串转换为int不起作用...
import java.util.Scanner;
import java.io.*;
class hole
{
public static void main(String[] args)
{
Scanner reader= new Scanner(System.in);
int[] nums= new int[3];
String str= reader.nextLine();
String str_1= str.replaceAll("=","+");
String[] split= str_1.split("[+]");
for (int k=0; k<split.length; k++)
{
String ex= split[k];
nums[k]= Integer.parseInt(ex);
}
}
}
答案 0 :(得分:0)
为什么你不只是减去最后的答案减去第一个数字并建立第三个数字。拆分字符串是多余的,因为您可以使用简单的数学来求解x。
871-433 = 438
h=3
public static void main(String[] args)
{
int a = 433;
int b = 871;
int c = b - a;
String s = "4H8";
char x;
int location = 0;
for(int i = 0; i < s.length(); i++)
{
char d = s.charAt(i);
if(d.isDigit()){
}
else{
location = i;
x = d;
}
}
String solve = c.toString();
System.out.println(x + "=" + solve.charAt(location) );
}
答案 1 :(得分:0)
4H8
不是整数,因此parseInt
无效。
看起来你还有一些方法可以继续这样做,所以我不会通过给你代码,只是一些想法来破坏你的乐趣。
假设等式总是X + Y = Z
,其中X,Y和Z是一些整数,其中一个可以包含H
......
你需要有几个案例:
如果H
位于X
,您可以从X
中减去Y
来获得Z
。
如果H
位于Y
,您可以从Y
中减去X
来获得Z
。
如果H
位于Z
,您可以通过添加Z
和X
来获得Y
。
但这仍然没有给你H
。为此,您可以在我们的字符串中找到H
的位置,并在上面计算的数字中提取该位置的数字。
因此,在调用parseInt
之前,您应该查找H
并简单地存储字符串,如果您找到它。
parseInt
也不喜欢空格,所以你应该以某种方式删除它们。
如果方程并不总是X + Y = Z
形式(即你也可以有减法,乘法,除法和/或多项),它会变得有点复杂。
答案 2 :(得分:0)
试试这个:
public static void main(String[] args)
{
Scanner reader = new Scanner(System.in);
int[] nums = new int[3];
boolean[] isNum = new boolean[3];
String str = reader.nextLine();
// String str_1= str.replaceAll("=","+");
String[] split = str.split("[+=]");
int i = 0;
for (int k = 0; k < split.length; k++) {
try {
String s = split[k];
isNum[k] = true;
nums[i] = Integer.parseInt(s);i++;
} catch (NumberFormatException e) {
// TODO: handle exception
isNum[k] = false;
}
}
int tot ;
if(str.indexOf("H")>str.indexOf("=")){
tot = nums[1] + nums[0];
}else{
tot = nums[1] - nums[0];
}
for (int k = 0; k < split.length; k++) {
if(!isNum[k]){
int indx = split[k].indexOf("H");
String h = Integer.toString(tot).charAt(indx)+"";
h = str.replace("H",h);
System.out.println("New expression :"+h);
}
}
}
答案 3 :(得分:0)
尝试以下程序,这仅适用于输入a + b = c格式 以下程序提供正确的输出
import java.util.Scanner;
public class Hole {
public static void main(String args[])
{
int hLocation = 0;
int result;
char hValue;
Scanner in=new Scanner(System.in);
String str=in.nextLine().replaceAll(" ", "");
String[] split= str.split("[+=]");
for(int i=0;i<split.length;i++){
if(split[i].contains("H")){
hLocation=i;
}
}
if(hLocation==0){
result=Integer.parseInt(split[2])-Integer.parseInt(split[1]);
}else if(hLocation==1){
result=Integer.parseInt(split[2])-Integer.parseInt(split[0]);
}
else{
result=Integer.parseInt(split[0])+Integer.parseInt(split[1]);
}
hValue= String.valueOf(result).charAt(1);
str=str.replace('H', hValue);
System.out.println(str);
}
}
答案 4 :(得分:0)
试试这个(评论是不言自明的):
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int[] nums = new int[3];
int varIndex = 0;
int result = 0;
String str = reader.nextLine();
//remove spaces and split into 3 parts based on symbols
String[] components = str.replaceAll(" ", "").split("\\+|=");
for (int i = 0; i < components.length; i++) {
try {
nums[i] = Integer.parseInt(components[i]);
} catch (Exception e) {
varIndex = i; //this component contains "H"
}
}
//Calculate the value of the number which has "H"
switch (varIndex) {
case 0:
result = nums[2] - nums[1]; break;
case 1:
result = nums[2] - nums[0]; break;
case 2:
result = nums[0] + nums[1]; break;
}
nums[varIndex] = result;
//Print the output
System.out.println(nums[0] + " + " + nums[1] + " = " + nums[2]);
System.out.println("H = " + (String.valueOf(result)).charAt(components[varIndex].indexOf('H')));
}