Как избавиться от бага дублирования символа при вводе?
package Convert;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class mainConvert {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
System.out.println("write \"M\" to convert mass,\nwrite \"D\" to convert distance");
@SuppressWarnings("unused")
String line;
while ((line = reader.readLine()).equalsIgnoreCase("D")) {
try {
System.out.println("write \"F\" to convert foots,\nwrite \"M\" to convert metres");
if ((line = reader.readLine()).equalsIgnoreCase("F")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertDistanceFrom.Foot(num);
} else if ((line = reader.readLine()).equalsIgnoreCase("M")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertDistanceFrom.Metr(num);
} else {
System.out.println("syntax error");
}
} catch (IOException e) {
e.printStackTrace();
}
}
while ((line = reader.readLine()).equalsIgnoreCase("M")) {
try {
System.out.println("write \"Kg\" to convert kilograms,\nwrite \"K\" to convert carats");
if ((line = reader.readLine()).equalsIgnoreCase("Kg")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertMassFrom.Kg(num);
} else if ((line = reader.readLine()).equalsIgnoreCase("K")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertMassFrom.Karat(num);
} else {
System.out.println("syntax error");
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ConvertMassFrom {
static void Kg(int kg) {
double g, f, k;
g = kg * 1000;
f = kg * 2.2046226218;
k = kg * 5000;
System.out.println(" килограммы: " + kg + " \n граммы: " + g
+ " \n фунты: " + f + " \n караты: " + k);
}
static void Karat(int k) {
double f, g, kg;
kg = k * 0.0002;
g = k * 0.2;
f = k * 0.0004409245;
System.out.println(" караты: " + k + " \n килограммы: " + kg
+ " \n граммы: " + g + " \n фунты: " + f);
}
}
class ConvertDistanceFrom {
static void Foot(int f) {
double j, mi, m;
j = f * 0.3333333333;
mi = f * 0.0001893939;
m = f * 0.3048;
System.out.println(" футы: " + f + " \n ярды: " + (float) j
+ " \n мили: " + (float) mi + " \n метры: " + m);
}
static void Metr(int m) {
float mi, j, f;
mi = m * 0.0006213712f;
j = m * 1.0936132983f;
f = m * 3.280839895f;
System.out.println(" метры: " + m + " \n мили: " + mi
+ " \n ярды: " + j + " \n футы: " + f);
}
}
Ответы (1 шт):
Автор решения: fox
→ Ссылка
package Convert;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class mainConvert {
public static void main(String[] args) throws IOException {
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
System.out.println("write \"M\" to convert mass,\nwrite \"D\" to convert distance");
String line;
line = reader.readLine();
if (line.equalsIgnoreCase("D")) {
try {
System.out.println("write \"F\" to convert foots,\nwrite \"M\" to convert metres");
line = reader.readLine();
if (line.equalsIgnoreCase("F")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertDistanceFrom.Foot(num);
} else if (line.equalsIgnoreCase("M")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertDistanceFrom.Metr(num);
} else {
System.out.println("syntax error");
}
} catch (IOException e) {
e.printStackTrace();
}
}
else if (line.equalsIgnoreCase("M")) {
try {
System.out.println("write \"Kg\" to convert kilograms,\nwrite \"K\" to convert carats");
line = reader.readLine();
if (line.equalsIgnoreCase("Kg")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertMassFrom.Kg(num);
} else if (line.equalsIgnoreCase("K")) {
System.out.println("write the number");
int num;
num = Integer.parseInt(reader.readLine());
ConvertMassFrom.Karat(num);
} else {
System.out.println("syntax error");
}
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
/всего то: нужно было воспользоваться переменной line, вместо постоянного вызова метода/ !!!