Ist es möglich einen int Array wirklich leer zu initialisieren oder zu füllen?

Jakonfire

Mitglied
Ich brauche für eine Aufgabe einen komplett leeren Array vom Typ int. Es werden bei manchen Tests teilweise (absichtlich) nicht alle Felder gefüllt und deshalb wird an diesen Stellen 0 ausgegeben (es soll kompletter Array ausgegeben werden, teilweise auch 0 als Wert). Wenn ich den Array wie im Code Beispiel versuche zu füllen passen aber die Datentypen nicht. Hat jemand eine andere Idee?

Java:
        int[] zahlen = new int[26];
        for(int i = 0; i < 26; i++){       
            zahlen[i] = "";
        }
 

Flown

Administrator
Mitarbeiter
Was ist leer für dich? Wenn du ein primitives Array initialisierst werden da Standardwerte hineingeschrieben. D.h. in deinem Fall stehen da 26 mal die Ziffer 0 drin.
 
K

kneitzel

Gast
Wenn du zwischen int Zahlen und leer unterscheiden willst, dann wäre ein Referenztyp eine Möglichkeit:

Integer[] zahlen = new Integer[26]();
Damit hast Du dann auch am Anfang alles auf null. Und wenn du jetzt einzelne Zahlen einfügst kannst Du unterscheiden ob es null ist oder eine Zahl.
 

Jakonfire

Mitglied
Wenn du zwischen int Zahlen und leer unterscheiden willst, dann wäre ein Referenztyp eine Möglichkeit:

Integer[] zahlen = new Integer[26]();
Damit hast Du dann auch am Anfang alles auf null. Und wenn du jetzt einzelne Zahlen einfügst kannst Du unterscheiden ob es null ist oder eine Zahl.
So habe ich es auch gemacht, aber wie unterscheide ich zwischen einer 0 die vorher drin stand und einer die eingelesen wurde?
 
K

kneitzel

Gast
Du unterscheidest zwischen null und 0. null ist die null-Referenz und 0 ist der Integer mit Wert 0.

Edit: Und bitte auch beachten: Du hast int gehabt und nicht Integer. int ist der value type und Integer ist eine Klasse (Wrapper typ für int, so dass es automatisches Boxing / Unboxing gibt).
 

Jakonfire

Mitglied
Du unterscheidest zwischen null und 0. null ist die null-Referenz und 0 ist der Integer mit Wert 0.

Edit: Und bitte auch beachten: Du hast int gehabt und nicht Integer. int ist der value type und Integer ist eine Klasse (Wrapper typ für int, so dass es automatisches Boxing / Unboxing gibt).
Also kann ich zum Bespiel die Werte dann so abfragen und ggf. ausgeben?

if(zahlen[k] != null){System.out.print ...
 
K

kneitzel

Gast
Ja, mit genau so einem Check kannst Du unterscheiden zwischen: Wert vorhanden oder eben kein Wert vorhanden.
 
K

kneitzel

Gast
Dann zeige doch einmal den ganzen Code. Was ist zahlen für eine Variable?

Also sowas funktioniert:
Java:
    Integer[] zahlen = new Integer[10];
    if (zahlen[0] != null)
        System.out.println("Not null!");

Wenn zahlen ein int Array ist, bekomme ich auch eine andere Meldung ("error: incomparable types: int and <null>").
 

Jakonfire

Mitglied
Das ist der gesamte Code:
Java:
import java.util.Scanner;
public class Statistik {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String groesse = args[0];
        String anzahl = args[1];
        int menge = Integer.parseInt(anzahl);
        int a = Integer.parseInt(groesse);
        
        int merke = 0;
        int stelle = 0;
        String ausgabe1 = "";
        String ausgabe2 = "";
        
        int zahlen [] = new int [a];
        int haeufigkeit [] = new int [a];
        int pos = 0;
        boolean flag;
      
        
        
        for (int i = 0; i < menge; i++){
                merke = in.nextInt();
            for(int j = 0; j < a; j++){   
                if(merke == zahlen[j]){
                    flag = true;
                    haeufigkeit[j] = haeufigkeit[j] + 1;
                }
            if(flag != true){
                zahlen[stelle] = merke;
                haeufigkeit[stelle] = haeufigkeit[stelle] + 1;
                stelle = stelle + 1;
                }
            flag = false;
        }
        for(int k = 0; k < a; k++){
            if(zahlen[k] != null){
                    ausgabe1 = ausgabe1 + zahlen[k] + ", ";
                    ausgabe2 = ausgabe2 + haeufigkeit[k] + ", ";
                }
            }
        }
        System.out.println(ausgabe1);
        System.out.println(ausgabe2);
    }
}
 
K

kneitzel

Gast
Du hast Zahlen ja auch weiterhin als int Array und nicht als Integer Array.

Ein int Array kann keine null Werte haben, da es ein Value Type ist.
Du musst es zu einem Integer Array machen!

Und um gleich den nächsten Fehler zu erwähnen: Deine Variable flag wird nur innerhalb eines ifs gesetzt. Daher kann die Prüfung erfolgen, wenn es noch nicht initialisiert wurde -> Bei der Deklaration gleich auf false setzen!
 

Jakonfire

Mitglied
Du hast Zahlen ja auch weiterhin als int Array und nicht als Integer Array.

Ein int Array kann keine null Werte haben, da es ein Value Type ist.
Du musst es zu einem Integer Array machen!

Und um gleich den nächsten Fehler zu erwähnen: Deine Variable flag wird nur innerhalb eines ifs gesetzt. Daher kann die Prüfung erfolgen, wenn es noch nicht initialisiert wurde -> Bei der Deklaration gleich auf false setzen!
Achso okay, hatte dein Edit überlesen. Dachte boolean ist Standard immer false? Aber danke, ändere ich auch gleich.
 
K

kneitzel

Gast
Achso okay, hatte dein Edit überlesen. Dachte boolean ist Standard immer false? Aber danke, ändere ich auch gleich.
Wenn Variablen automatisch initialisiert werden, dann ist die Initialisierung immer das neutrale Element wenn man so will. Bei Referenz-Typen ist dies null, bei Zahlen 0, bei boolean false.

Aber es gibt viele unterschiedliche Variablen wenn man so möchte:
Instanz- und Klassenvariablen: diese werden automatisch initialisiert.
Array Elemente: Diese werden bei Erstellung eines Arrays initialisiert.
lokale Variablen: diese werden nicht initialisiert und es kann erst lesend auf diese zugegriffen werden, nachdem sie initialisiert wurden.
Parameter: Diese werden automatisch durch den angegebenen Parameterwert initialisiert

Das findet sich im Detail in der Java Language Specification 4.12.5:
"A local variable (§14.4, §14.14) must be explicitly given a value before it is used, by either initialization (§14.4) or assignment (§15.26), in a way that can be verified using the rules for definite assignment (§16 (Definite Assignment))."
 
K

kneitzel

Gast
Danke, funktioniert. Programm selbst noch nicht, da gibt er mir in Zeile 25 noch den Fehler java.lang.NullPointerException
Ja, das ist verständlich, denn Du kannst ja jetzt null Werte haben.

Zeile 25 ist ja:
Java:
if(merke == zahlen[j]){

merke ist ein int, zahlen[j] ein Integer.
Zum Vergleichen will Java nun aus dem Integer ein int machen, da dort aber null steht, gibt es die NPE.
 

Jakonfire

Mitglied
Ja, das ist verständlich, denn Du kannst ja jetzt null Werte haben.

Zeile 25 ist ja:
Java:
if(merke == zahlen[j]){

merke ist ein int, zahlen[j] ein Integer.
Zum Vergleichen will Java nun aus dem Integer ein int machen, da dort aber null steht, gibt es die NPE.
Ah okay, danke. Also muss merke auch ein Integer statt int sein?
 
K

kneitzel

Gast
Wenn Du merke zu einem Integer machst, dann dürfte die NPE weg sein.

Alternativ kannst Du aber auch auf null prüfen:
Java:
if(zahlen[j] != null && merke == zahlen[j]) {
 

Jakonfire

Mitglied
Wenn Du merke zu einem Integer machst, dann dürfte die NPE weg sein.

Alternativ kannst Du aber auch auf null prüfen:
Java:
if(zahlen[j] != null && merke == zahlen[j]) {
Ja scheint beides zu funktionieren, deine zweite gefällt mir aber besser.
Dafür jetzt in Zeile 29 dieser Fehler: java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
Aber der hat wahrscheinlich andere Ursachen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
C SFTP Verbindung nicht möglich Java Basics - Anfänger-Themen 4
U Ascii wert verschieben, wie möglich? Java Basics - Anfänger-Themen 3
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
R Ist es möglich, ein Zahlungs-Gateway mit Java zu bauen? Java Basics - Anfänger-Themen 11
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
TimoN11 Java - Eine oder mehrere Eingaben möglich machen Java Basics - Anfänger-Themen 6
Y Aufruf von Methode nicht möglich. Java Basics - Anfänger-Themen 2
s.marcii Modulo in der Variable einsetzen - ist das möglich? Java Basics - Anfänger-Themen 2
P Klassenübergreifende Ausgabe mittels "getter" nicht möglich Java Basics - Anfänger-Themen 21
Z Kein überprüfen des gesamten Arrays möglich.(Viergewinnt Spiel) Java Basics - Anfänger-Themen 6
B Erste Schritte Guice Injection nicht in jeder Klasse möglich Java Basics - Anfänger-Themen 2
M Ist es möglich, das größte und zweitgrößte element in einem Array mit nur einer Schleife ausfindig zu machen ? Java Basics - Anfänger-Themen 19
N Eine Zahl solange teilen bis es nicht möglich ist und die Ergebnisse ausgeben Java Basics - Anfänger-Themen 23
G Warum ist hier ein Lamda-Ausdruck möglich Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
Olis Erste Schritte Simples Memory Spiel möglich? Java Basics - Anfänger-Themen 1
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
S Sequenz von Zahlen bei einem Stack möglich oder nicht möglich? Java Basics - Anfänger-Themen 5
W Dezimalzahlen in Binärzahl umwandeln. Wie möglich ? Java Basics - Anfänger-Themen 9
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
K Einzelne Email verschieben nicht möglich Java Basics - Anfänger-Themen 3
H Datentypen for(typ a : b) nur typ Object möglich ? Java Basics - Anfänger-Themen 2
JavaNewbie2.0 Warum ist dies nicht möglich? Java Basics - Anfänger-Themen 7
T Input/Output Einlesen eines .txt Files nur bei gesetztem Breakpoint möglich Java Basics - Anfänger-Themen 1
M Ist es möglich den Login in eine Drittseite für den eigenen zu benutzen? Java Basics - Anfänger-Themen 1
J Java Ordner Erstellung nicht möglich. Java Basics - Anfänger-Themen 3
R Primzahl ja/nein - besserer Code möglich? Java Basics - Anfänger-Themen 2
M Eingabe im Terminal nicht möglich Java Basics - Anfänger-Themen 20
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
Z Pattern und Matcher substring zu String möglich? Java Basics - Anfänger-Themen 4
D Hinzufügen einer Site zur Ausnahmeliste nicht möglich Java Basics - Anfänger-Themen 1
D Liste verschiedener konkreter Klassen möglich? Java Basics - Anfänger-Themen 2
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
K Variablen Ist es möglich eine ArrayList vom Typ Array zu erstellen? Java Basics - Anfänger-Themen 2
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
A Methoden Parameter optionalisieren möglich? - Wie? Java Basics - Anfänger-Themen 19
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
0 Über CMD die JAVA Datei ausführen? möglich? Java Basics - Anfänger-Themen 8
A Arrays Per For Schleife Erstellen - !Möglich? Java Basics - Anfänger-Themen 8
V Eine einfachere Variante möglich ? Java Basics - Anfänger-Themen 3
1 Mini Programm, keine Eingabe möglich.. Java Basics - Anfänger-Themen 6
J Windows Maus-Zeigerbeschleunigung aktivieren/deaktivieren - Mit Java möglich? Java Basics - Anfänger-Themen 2
C String Objekt erstellen auch ohne new() möglich? Java Basics - Anfänger-Themen 5
D String mit Integer Variablen Namen vergleichen, möglich? Java Basics - Anfänger-Themen 6
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
F Exportieren als ausführbare Jar-Datei unter Ubuntu nicht möglich Java Basics - Anfänger-Themen 17
K Mehrere Klassen beim JavaEditor verwenden - möglich? Java Basics - Anfänger-Themen 8
K Erste Schritte Vergleichen von Zahlen ohne mehrere if-Verzweigungen - möglich? Java Basics - Anfänger-Themen 6
S Bearbeiting von xml-Datei in src-Ordner möglich?i Java Basics - Anfänger-Themen 5
R Variablen Möglich?: Cast einer Referenzvariable auf den Typ seines Objektes Java Basics - Anfänger-Themen 19
G PrintWriter each line möglich? Java Basics - Anfänger-Themen 4
B Input/Output Formatierter Text aus PDF als Array auswerten in JAVA möglich ? Java Basics - Anfänger-Themen 8
E Input/Output Deserialisierung (Manipulation der Objekte möglich?) Java Basics - Anfänger-Themen 2
J "public int x" - Zugriff von anderer Klasse (selbes Package) nicht möglich?! Java Basics - Anfänger-Themen 4
R Tippen nur beschränkt möglich Java Basics - Anfänger-Themen 5
H Panel in Variable setzen möglich? Java Basics - Anfänger-Themen 10
GianaSisters Methoden eigenes TableModel -> removeRow möglich machen Java Basics - Anfänger-Themen 30
T Generisches Feld in nicht-generischer Klasse möglich? Java Basics - Anfänger-Themen 5
H Zahlen Bilder zuordnen möglich? Java Basics - Anfänger-Themen 4
P info()-Methode mit Objektrückgabe: Konsolenausgabe möglich? Java Basics - Anfänger-Themen 8
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
S Spielfeld Ausgabe mit 2 for - Schleifen möglich ? Java Basics - Anfänger-Themen 4
K Klassen Klassen nicht möglich? Java Basics - Anfänger-Themen 8
P Klassen Instanz einer Klasse in ihrer eigenen Definition erzeugen? möglich? Java Basics - Anfänger-Themen 4
C Stringeingabe: kein Satz wegen Leerzeichen möglich Java Basics - Anfänger-Themen 3
T keine buchstaben!nur zahlen eingabe möglich Java Basics - Anfänger-Themen 48
Y .class Ausführung nicht möglich - Path lässt sich nicht ändern Java Basics - Anfänger-Themen 8
I Input/Output System.out.println formatierung? möglich? Java Basics - Anfänger-Themen 2
G Input/Output Mehrere Einlesevorgänge nicht möglich Java Basics - Anfänger-Themen 4
L Öffnen des Programms nach kompilieren nicht möglich Java Basics - Anfänger-Themen 3
ruutaiokwu final wenn immer möglich verwenden? Java Basics - Anfänger-Themen 30
T Boolean in ein Objektdatentyp casten möglich? Java Basics - Anfänger-Themen 5
H ActionListener Verbesserung möglich? (This) Java Basics - Anfänger-Themen 3
N run() methode von threads überladen möglich? Java Basics - Anfänger-Themen 5
C einfacher Link zu *.html Datei möglich? Java Basics - Anfänger-Themen 4
D Funktion mit optionalen Parametern möglich? Java Basics - Anfänger-Themen 3
Q switch case hier möglich Java Basics - Anfänger-Themen 10
D Datentypen mehrdimensionales Array meherer Typen möglich ? Java Basics - Anfänger-Themen 6
D Neues Objekt in Methode erstellen möglich? Java Basics - Anfänger-Themen 5
E "Zweigeteilte" JNLP-Datei möglich? Java Basics - Anfänger-Themen 2
capgeti Verschiedene Rückgabetypen ohne Typecast möglich? Java Basics - Anfänger-Themen 7
-horn- public static double[][][] NAME() nur per RETURN Wertrückgabe möglich? Java Basics - Anfänger-Themen 20
J Null-Pointer -> Code-Zeile ausgeben möglich? Java Basics - Anfänger-Themen 7
C Ist gleichzeitiges Lesen und Schreiben einer ArrayList möglich Java Basics - Anfänger-Themen 2
D Sichere Loginverbindungen möglich? Java Basics - Anfänger-Themen 3
A Parameter in der URL möglich? Java Basics - Anfänger-Themen 6
A In Java Ribbon GUI möglich Java Basics - Anfänger-Themen 2
L Programm so klein wie möglich machen Java Basics - Anfänger-Themen 12
G Prüfung ob GUI möglich? Java Basics - Anfänger-Themen 2
G Wieso enum Declaration nur außerhalb einer Methode möglich? Java Basics - Anfänger-Themen 9
-horn- Array mit nicht fixer Größe möglich? Nachträgliches befüllen Java Basics - Anfänger-Themen 10
J Array-Index nur als Integer möglich? Java Basics - Anfänger-Themen 15
J Ordner Passwortsichern möglich? Java Basics - Anfänger-Themen 10
H ist eine "neue Session" für Mail möglich? Java Basics - Anfänger-Themen 3
S LineNumberReader - bessere Lösung möglich? - Log4J Java Basics - Anfänger-Themen 9
A Start über Konsole nicht möglich Java Basics - Anfänger-Themen 4
X WAV conversion ist einfach nicht möglich Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben