Логическая ошибка при попытке решить адвентофкод, день 4JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Логическая ошибка при попытке решить адвентофкод, день 4

Сообщение Anonymous »

Это четвертый день появления второй части кода...

Я опробовал образец ввода, который они предоставили, и он был правильным, и я использовал тот ввод, который у меня есть, и каждый раз получался неверный результат.
Что я вижу 1
Что я вижу 2
Ниже есть дополнительная информация, но это то, что происходит после того, как вы решите первую часть
Появление кода, день 4

Ввод головоломки
Ввод данных зависит от пользователя, но код должен быть одинаковым независимо от ввода
  • byr (год рождения) — четыре цифры; не менее 1920 и не более 2002 года.
  • iyr (Год выпуска) - четыре цифры; минимум 2010 и максимум 2020 год.
  • эйр (Год окончания срока действия) – четыре цифры; не менее 2020 и не более 2030.
  • hgt (Высота) — число, за которым следует либо см, либо дюйм:

  • Если см, то число должно быть не менее 150 и не более 193.
[*]
  • Если в, число должно быть не менее 59 и не более 76.
[*]hcl (Цвет Волос) – #, за которым следуют ровно шесть символов от 0 до 9 или a–f.
[*]ecl (Цвет Глаз) – ровно один из: amb blu brn gry grn hzl oth.
[*]pid (ID паспорта) – девятизначное число, включая ведущие нули.
[*]cid (идентификатор страны) — игнорируется, отсутствует или нет.

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;

public class Main {
public static void main(String[] args) throws FileNotFoundException {
File inputText = new File("src/input.txt");
Scanner sc = new Scanner(inputText);
ArrayList ids = new ArrayList();
ArrayList attributes = new ArrayList();

while (sc.hasNextLine()) {
String builtString = "";
String input = "1";

while(input.length() != 0 && sc.hasNextLine()) {
input = sc.nextLine();
builtString += input + " ";
}
String[] temp = builtString.split(" ");
ArrayList tempIds = new ArrayList();
ArrayList tempAttributes = new ArrayList();
for (String i : temp) {
tempIds.add(i.split(":")[0]);
tempAttributes.add(i.split(":")[1]);
}
ids.add(tempIds);
attributes.add(tempAttributes);
}
System.out.println(ids);
System.out.println(attributes);
int valid = 0;

for (int a = 0; a < ids.size(); a++) {
int has = 0;
for (int j = 0; j < ids.get(a).size(); j++) {
String id = ids.get(a).get(j).toString();
String attribute = attributes.get(a).get(j).toString();
if (id.contains("ecl")) {
if (attribute.contains("blu") || attribute.contains("brn") || attribute.contains("gry") || attribute.contains("grn") || attribute.contains("hzl") || attribute.contains("oth")) {
System.out.println(attribute + " is an eye color");
has++;
} else {
System.out.println(attribute + " is not an eye color");
}
has++;
}
if (id.contains("pid")) {
if (attribute.length() == 9) {
try {
Integer.parseInt(attribute);
System.out.println(attribute + " of pid attribute is valid ");
has++;
} catch (Exception e) {
System.out.println(attribute + " of pid attribute is not valid");
}
}
has++;
}
if (id.contains("eyr")) {
int at = Integer.parseInt(attribute);
if (at >= 2020 && at = 'a' && c = 1920 && date = 2010 && date = 59 && amount = 150 && amount = 14) {
valid++;
}
}
System.out.println(valid);
System.out.println("End");
}
}


Подробнее здесь: https://stackoverflow.com/questions/651 ... code-day-4
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»