Dieser Artikel wurde von Anfängern in der Programmierung geschrieben. Was ist los, du solltest das mehr tun! !! Wenn Sie irgendwelche Fragen haben, Bitte kommentieren.
Diese Frage ist auch eine Paiza-Übung. Bitte seien Sie versichert, dass es nichts mit dem Rang nach oben oder unten zu tun hat.
Ich habe versucht, es mit Java zu lösen! !! Paiza-Übung "Long Table Unagiya"
Dies ist ein prozeduraler Typ (ist er korrekt?). Als ich diesen Artikel veröffentlichte, hatte ich Code, der objektorientiert geschrieben war Ich habe es auf meine eigene Weise verdaut.
Bitte überprüfen Sie hier die spezifischen Details des Problems.
Code, der nicht objektorientiert geschrieben wurde
import java.util.*;
public class unagiya {
public static void main(String[] args) {
/*
*Ermitteln Sie die Gesamtzahl der Sitzplätze im Geschäft und die Anzahl der Gruppen, die das Geschäft als String-Typ besuchen, und speichern Sie sie in der Zeile
*Die in Zeile gespeicherten Daten werden durch Teilen geteilt und in lineArray des String-Arrays gespeichert.
*/
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
String[] lineArray = line.split(" ");
/*
*Wandeln Sie die in lineArray gespeicherten Daten um und speichern Sie sie in jeder Variablen
*
* seatNum:Anzahl der Sitze
* totalGuest:Anzahl der Gruppen, die den Laden besuchen
*/
int seatNum = castString(lineArray[0]);
int totalGuest = castString(lineArray[1]);
/*
* seats:Erstellen Sie die Anzahl der Plätze mit hashMap
*Ganzzahl ist die Sitznummer
*Ob Boolean eine Person ist oder nicht(Wenn das stimmt, können Sie sich setzen,)
*/
Map<Integer,Boolean> seats = new HashMap<>();
for(int i = 1; i <= seatNum; i++){
seats.put(i,true);
}
/*
*isSitCustomer:Überprüfen Sie, ob sich auf dem vom Kunden ausgewählten Sitzplatz Personen befinden
*Wenn nicht, werfen Sie wahr
*
* choiceSeat:Sitznummer, die der Basispunkt für Kunden ist
*menberNum:Anzahl der Kunden, die gekommen sind
*/
int choiceSeat = 0;
int memberNum = 0;
for(int i = 0; i < totalGuest; i++){
//Erhält den Eingabewert der Konsole
//Zuweisen zu memberNum und choiceSeat
line = scanner.nextLine();
lineArray = line.split(" ");
memberNum = castString(lineArray[0]);
choiceSeat = castString(lineArray[1]);
//Wenn isSitGuest wahr ist, schreiben Sie die Sitzplatzinformationen des vom Kunden ausgewählten Sitzplatzes und die Anzahl der Personen auf falsch
if(isSitGuest(seats,choiceSeat,memberNum)){
for(int j = 0,index = 1 ; j < memberNum; j++){
if(seats.size() < choiceSeat + j){
seats.put(index, false);
index++;
} else {
seats.put(choiceSeat + j,false);
}
}
}
}
//Überprüfen Sie die falsche Anzahl von Sitzplatzinformationen und ersetzen Sie sie im Ergebnis
int result = 0;
for(int i = 1; i <= seats.size(); i++){
if(seats.get(i).equals(false)){
result++;
}
}
System.out.println(result);
}
//Wandeln Sie eine String-Typ-Nummer in einen Int-Typ um
public static int castString(String strNum){
int num = Integer.parseInt(strNum);
return num;
}
/*
*Karte Sitzplatzinformationen erhalten, von Kunden ausgewählte Sitzplätze, Anzahl der Kunden,
*Überprüfen Sie, ob die Anzahl der Kunden des vom Kunden ausgewählten Sitzplatzes falsch ist
*
*Bedingungen
*Gibt false zurück, wenn mehr Gäste als Sitzplätze vorhanden sind
*Gibt false zurück, wenn die Sitzinformationen nur einen false enthalten
*/
public static boolean isSitGuest(Map seats, int choiceSeat, int menberNum){
if(menberNum > seats.size()){
return false;
}
boolean flag = true;
for(int i = 0,index = 1; i < menberNum; i++){
//index:Geben Sie die allererste 1 der Sitzinformationen an
//Wird beim Zählen von 1 verwendet, wenn die Anzahl der Kunden die Sitzplatznummer überschreitet
if(seats.size() < choiceSeat + i){
if(seats.get(index).equals(false)){
flag = false;
index++;
} else {
index++;
}
} else if(seats.get(choiceSeat + i).equals(false)){
flag = false;
}
}
if(flag){
return true;
} else {
return false;
}
}
}
Ich habe es nach ungefähr zwei Wochen wieder gelesen, aber es ist schwer zu sehen. Ich mache Plätze mit Map und mache verschiedene Dinge ... (Ich hörte in der Mitte auf zu lesen)
Zu dieser Zeit war ich gut gelaunt und sagte: "Ich konnte einen anständigen Code schreiben."
Ein Wort von Shiracamus, der wie ein Meteor aussah "Weil es eine große Sache ist, lasst uns objektorientiert sein."
Hier ist der Code, den ich mit diesem Wort hinterlassen habe (Wir haben die Erlaubnis von Shiracamus, den Code zu posten)
import java.util.*;
enum Seat { AVAILABLE, TAKEN };
class LongTable {
private Seat seat[];
LongTable(int seatNum) {
seat = new Seat[seatNum];
for (int i = 0; i < seatNum; i++) {
seat[i] = Seat.AVAILABLE;
}
}
boolean sit(int position, int num) {
for (int i = position; i < position + num; i++) {
if (seat[i % seat.length] != Seat.AVAILABLE) {
return false;
}
}
for (int i = position; i < position + num; i++) {
seat[i % seat.length] = Seat.TAKEN;
}
return true;
}
}
public class Unagiya {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] input = scanner.nextLine().split(" ");
int seatNum = Integer.parseInt(input[0]);
int groupNum = Integer.parseInt(input[1]);
LongTable table = new LongTable(seatNum);
int sitCount = 0;
for (int i = 0; i < groupNum; i++){
input = scanner.nextLine().split(" ");
int memberNum = Integer.parseInt(input[0]);
int seatNumber = Integer.parseInt(input[1]);
if (table.sit(seatNumber, memberNum)) {
sitCount += memberNum;
}
}
System.out.println(sitCount);
}
}
In dem Moment, als ich diesen Code sah, traf ein elektrischer Schlag meinen Körper.
Wahrscheinlich basierend auf meinem Code neu geschrieben.
Dann verbringe ich mehr Zeit, Ich werde versuchen, in meinem eigenen "objektorientierten" zu schreiben.
Ich fange an, an die Charaktere zu denken.
Betrachten wir es anhand des Flussdiagramms, das ich zuvor geschrieben habe.
Als allererstes · Langer Tisch
enum Seat {AVAILABLE,UNAVAILABLE}
Von TAKEN Geändert zum Ziel NICHT VERFÜGBAR.
Und der Tisch. Da die Tabelle eine Tabelle ist, gibt es keine Methode (Verhalten). Es existiert einfach dort.
class LongTable {
Seat[] seats;
/**
*Konstruktor zum Erstellen einer Tabelle
*Der Anfangswert ist VERFÜGBAR
* @param tableNum
*/
LongTable(Integer tableNum) {
this.seats = new Seat[tableNum];
for (int i = 0; i < tableNum; i++) {
seats[i] = Seat.AVAILABLE;
}
}
}
Als nächstes kommt der Kunde des Edo-Kindes. Diesmal ist er etwas schnell.
Wenn sich keine Personen auf dem Sitz befinden (isSit) Sitzen (sitzen) Wenn sich eine Person auf dem Sitz befindet (isSit), gehen Sie nach Hause
class Guest {
/**
*Eine Methode, um wahr zu werfen, wenn sich niemand auf dem vom Kunden gewählten Platz befindet
* @param guestNum
* @param choiceNum
* @param table
* @return
*/
public static Boolean isSit(Integer guestNum, Integer choiceNum, LongTable table) {
Boolean seatConfirmation = true;
for (int i = choiceNum; i < choiceNum + guestNum; i++) {
if (table.seats[i % table.seats.length] == Seat.UNAVAILABLE) {
seatConfirmation = false;
}
}
return seatConfirmation;
}
/**
*Eine Methode, bei der ein Kunde sitzt und den Sitz NICHT VERFÜGBAR macht
* @param guestNum
* @param choiceNum
* @param table
*/
public static void sitting(Integer guestNum, Integer choiceNum, LongTable table) {
for (int i = choiceNum; i < choiceNum + guestNum; i++) {
table.seats[i % table.seats.length] = Seat.UNAVAILABLE;
}
}
}
Dann zählt die Anzahl der Personen, die auf dem Sitz sitzen, ... Vielleicht sind Sie das Personal des Ladens.
class Staff {
/**
*Methode zum Zählen der Anzahl der sitzenden Personen
* @param table
* @return count(Zählen Sie die Anzahl der NICHT VERFÜGBAREN Sitzplätze)
*/
public static Integer sitCount(LongTable table) {
Integer count = 0;
for (int i = 0; i < table.seats.length; i++) {
if (table.seats[i] == Seat.UNAVAILABLE) {
count++;
}
}
return count;
}
}
Die Zeichen sind jetzt vollständig. Alles was Sie tun müssen, ist den Fortschritt der Geschichte zu beobachten.
Die Geschichte wird in der Hauptmethode beschrieben.
public class Unagiya {
public static void main(String[] args) throws Exception{
//Eingabe: Ruft eine Zeile mit dem Eingabewert von der Konsole ab
//inpuArray: Speichern Sie die Zahlen in einer Zeile separat in einem Array
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
String[] inputArray = input.split(" ");
//tableNum: Anzahl der Plätze in Unagiya
//toDayGuest: Wie viele Gruppen von Gästen werden heute kommen
Integer tableNum = toCastString(inputArray[0]);
Integer toDayGuest = toCastString(inputArray[1]);
LongTable table = new LongTable(tableNum);
//guestNum: Anzahl der Personen in einer Gruppe
//choiceNum: Vom Gast gewählter Sitzplatz
Integer guestNum = 0;
Integer choiceNum = 0;
for (int i = 0; i < toDayGuest; i++) {
input = scanner.nextLine();
inputArray = input.split(" ");
guestNum = toCastString(inputArray[0]);
choiceNum = toCastString(inputArray[1]);
if (Guest.isSit(guestNum, choiceNum, table)) {
Guest.sitting(guestNum, choiceNum, table);
}
}
Integer count = Staff.sitCount(table);
System.out.println(count);
}
/**
*Methode zum Konvertieren der arabischen Zahl vom Typ String in den Typ Integer
* @param strNum
* @return num
*/
public static Integer toCastString(String strNum) {
Integer num = Integer.parseInt(strNum);
return num;
}
}
Ich habe ohne Probleme bestanden.
https://www.slideshare.net/masuda220/ss-14263541 Diese Folie ist aber sehr hilfreich Da die Bindung sehr streng ist, mache ich es ein wenig locker ww
Dies ist der zweite Artikel, obwohl ich Angst habe.
Ich ignoriere wahrscheinlich die Waffe, wie zum Beispiel Qiitas implizites Verständnis.
Wenn Sie das oben Gesagte gelesen haben, würde ich es begrüßen, wenn Sie einige Aufzeichnungen führen könnten. Vielen Dank an alle, die bis zum Ende gelesen haben.