1
문자열을 MeterNumber로 변환하는 메서드가 있습니다. 코드는 다음과 같습니다. 난 그냥 제공하는 경우누군가가 나를이 toString 메서드를 수정하는 데 도움을 줄 수 있습니까?
가531 481 889 O 788.5
652 364 795 P 2442.7
그것은 잘 작동합니다 :
531 481 889
652 364 795
을가 null를 돌려 그러나 내 입력이 형식 인 경우
public static MeterNumber fromString(String number) {
MeterNumber mn = new MeterNumber(false);
int i = 0, // position in number
n = 0, // number of digits
len = number.length();
boolean valid = true;
while (valid && i < len) {
char c = number.charAt(i);
i = i + 1;
if (n < 9 && Character.isDigit(c)) {
mn.digits[n] = c - '0';
n = n + 1;
} else if (Character.isWhitespace(c)) {
// skip spaces
} else {
valid = false;
}
}
int cs = mn.checksum();
if (valid && i == len && n == 9 &&
cs/10 == mn.digits[7] && cs % 10 == mn.digits[8]) {
return mn;
} else {
return null;
}
}
이 같은 입력을 읽을 생각이야 :
531 481 889 O 788.5
652 364 795 P 2442.7
문제를 봅니다. 왜 선의 끝에서 Char와 double이 간섭합니까?
이것은 메소드를 호출하는 코드입니다. 사전에
Scanner sc2 = new Scanner(new java.io.File("Readings.txt"));
Meter meter = Meter.load(sc2);
System.out.println(meter.getMeterNumber());
감사 :
private MeterNumber meterNumber;
public static Meter load(Scanner sc) {
MeterNumber meterNumber = MeterNumber.fromString(sc.nextLine());
int n = 1;
sc.nextLine();
Tariff[] tariffs = new Tariff[n];
for (int i = 0; i < n; i++) {
String kind = sc.next();
sc.nextLine();
if (kind.equals("P")) {
tariffs[i] = PeakTariff.PEAK_TARIFF;
} else if (kind.equals("O")) {
tariffs[i] = OffPeakTariff.OFF_PEAK_TARIFF;
}
}
return new Meter(meterNumber, tariffs);
}
public MeterNumber getMeterNumber() {
return meterNumber;
}
}
이
내 주요 메서드에서 호출하는 코드입니다.
'MeterNumber'란 무엇입니까? –
9 자리 숫자입니다 – lolian
Runnable 코드를 제공해야합니다. 그래서 우리는'MeterNumber'에 대한 코드를 보여줄 필요가 있습니다 –