2017-02-21 12 views
0

Ich bin ein Programmierer im ersten Jahr.Suchen eines Arrays für eine Kombination aus Buchstaben und Zahlen

Ich habe versucht, ein Array, das vier Variablen gespeichert hat, mit einem Eingang zu suchen.

Alle Beispiele, die ich gefunden habe, verwenden int und suchen nach einer Zahl innerhalb einer Liste.

Mein Programm muss nach einer Kombination aus Buchstaben und Zahlen suchen. (Bsp. COP 2800)

import java.util.Scanner; 

public class courseInfo { 
    public static int courseInfo(int[] list, int key) { 

     Scanner input = new Scanner(System.in); 

     // Input course name 
     System.out.print("Enter course name: (Ex. COP 2800) "); 
     double courseInput = input.nextDouble(); 

     for (int i = 0; i < list.length; i++) { 
     if (key == list[i]) 
      return i; 

     } 
     return -1; 
     } 

     public static void main(String[] args) { 
     int[] list = {COP 2800, PSY 1012, EVR 2001, COP 1000}; 
     System.out.println(linearSearch(list, courseInput)); 
    } 
} 

Bitte juristische Hinsicht verwenden, ich habe drei Wochen in dieser Klasse nur gewesen.

Wenn ich COP, PSY, EVR und COP aus Zeile 21 entferne, gebe ich einen anderen Fehler zurück;

+0

Die wichtigste Methode der 'courseInput' Variable nicht weiß, wie es in der' courseInfo' Methode existiert nur. Eine zweite Frage ist, wo die 'linearSearch' Methode definiert ist. Außerdem wird Ihr 'int []' nicht kompiliert.'COP 2800' ist keine Ganzzahl. Verwenden Sie eine 'String []' und verwenden Sie 'equals()' anstelle von '==', weil 'String' Objekte sind. – Jyr

+0

So viele Fehler ... aber beginnen wir mit: Wo ist deine 'linearSearch' Methode definiert? – azurefrog

Antwort

0

Sie überprüfen eine Gleichheitsbedingung für String-Werte mit einem CourseInput, das ein Int sein soll.

Außerdem geben Sie -1 zurück, was auch immer in der if-Bedingung passiert. Soll -1 zurückgegeben werden, wenn der Wert des Schlüssels nicht dem Wert in der Liste entspricht?

Auch die courseInput-Variable ist lokal für die Methode. Machen Sie es global, indem Sie es in der Klasse als Membervariable deklarieren.

+0

Ja, ich sollte produzieren und Fehler, wenn es das gesuchte Keyword nicht finden kann. – Vykn

+0

Fügen Sie eine andere Anweisung if (Bedingung) {// Code } else { return -1 } – Ronald

0

Sie haben double courseInput = input.nextDouble(), die nur Doubles akzeptieren, nicht Zeichen. Sie haben auch int[] list, was ein Array von Ganzzahlen ist, so dass es auch keine Zeichen enthalten kann. Sie werden mehr Glück haben, wenn Sie den ganzen Kursnamen (Buchstaben und Zahlen) in einen String eingeben. Dann können Sie eine ganze Zeile scannen und in einem Array von Strings speichern.

+0

Okay, String wird die Kombination von Zeichen & Zahlen akzeptieren? – Vykn

+0

Ja, aber bedenke, dass die ganzen Zahlen nicht in "int" -Form sind. Ich gehe davon aus, dass Ihr Ziel einfach darin besteht, den Namen des Kurses auszudrucken. Sie können also "COP 2800" drucken. Wenn Sie die Ganzzahlen für Berechnungen benötigen (z. B. sortieren Sie sie so, dass COP 1000 vor 2800 angezeigt wird), müssen Sie sie in Ints konvertieren – bluecanary

0

Ich schlage vor, Sie etwas mehr Arbeit an den grundlegenden Datentypen von Java, bevor Sie dies versuchen. Java ist eine ziemlich strictly typed Sprache, was bedeutet, dass im Allgemeinen (es gibt viele Ausnahmen) müssen Sie entscheiden, welche Art von Wert Sie in einer Variablen im Voraus speichern. Sie mischen viele Arten in Ihren Code: Ganzzahlen, Doppel und Strings.

Beginnen Sie also mit der Entscheidung, ob die Kennung eines Kurses eine Nummer eines Namens ist. Wenn es eine Nummer ist, können Sie eine int verwenden, um es zu speichern. Wenn es ein Name ist, können Sie String verwenden. Sie beachten, dass ein Thema Buchstaben und Zahlen enthält. Aber solange Sie die Nummern nicht direkt vergleichen müssen, können Sie die gesamte Kennung in einem String speichern. Es besteht keine Notwendigkeit, sie aufzuteilen.

Eine andere häufige Falle für neue Starter ist, dass primitive Typen (wie int) sich ganz anders verhalten als Objekte (wie String). Ein unmittelbarer Unterschied ist die Bedeutung von ==. Bei primitiven Typen werden die Werte verglichen, bei Objekten wird geprüft, ob die linke und die rechte Seite auf dasselbe Objekt verweisen.

Ich vermute, dass Sie möchten, dass Ihre Themen namentlich identifiziert werden (z. B. String). In diesem Fall könnte der Code in etwa so aussehen:

String[] subjects = {"COP2800", "PSY1012", "EVR2001"}; 

und

for (int i = 0; i < subjects.length; i++) { 
    if (subjects[i].equals(name)) 
     return i; 
} 
return -1; 
Verwandte Themen