Java: '.Klasse " erwartet, dass Fehler bei der übergabe array an Funktion
Ich bin dabei eine java-Klasse, wurden dann aber Weg von ihm für ein bisschen.
Versuchen, diese Sortierung-Programm zu arbeiten:
import java.util.*;
public class Assignment1
{
private int[] nums;
private int[] ast;
private int n;
public void sort(int[] vals)
{
this.nums = vals;
n = vals.length;
this.ast = new int[n];
merges(0, n - 1);
}
private void merges(int bot, int top)
{
if (bot < top)
{
int mid = bot + (top - bot) / 2;
merges(bot, mid);
merges(mid + 1, top);
merge(bot, mid, top);
}
}
private void merge(int bot, int mid, int top)
{
for (int i = bot; i <= top; i++)
{
ast[i] = nums[i];
}
int i = bot;
int j = mid + 1;
int k = bot;
while (i <= mid && i <= top)
{
if (ast[i] <= ast[j])
{
nums[k] = ast[i];
i++;
}
else
{
nums[k] = ast[j];
j++;
}
k++;
}
while (i <= mid)
{
nums[k] = ast[i];
k++;
i++;
}
}
private void show()
{
System.out.print("Sorted Array: ");
for(int l=0;l<nums.length;l++)
{
System.out.print(nums[l] + " ");
}
}
public static void main(String[] args)
{
Assignment1 a = new Assignment1();
Scanner scan = new Scanner(System.in);
System.out.print("\nArray Size: ");
int s = scan.nextInt();
int[] array = new int[s];
for(int x=0;x<s;x++)
{
System.out.print("Enter Element " + (x + 1) + ":");
array[x] = scan.nextInt();
}
a.sort(array[]);
a.show();
}
}
Die Fehler, die ich bekommen hab ist dieses:
Assignment1.java:82: error: '.class' expected
a.sort(array[]);
Ich weiß, es ist etwas grundlegendes entzieht sich mir, aber die Grundlagen sind die Dinge, die meisten sind verschwommen...
Warum verwenden Sie
nur-array ohne []
sarkastisch und kritisch ist nicht hilfreich. Lass ihn wissen, dass er hier falsch ist, statt zu kritisieren.
Sotirios Delimanolis' Fragen sind gültig und lohnt sich. Wenn die OP reflektiert und beantwortet, kann er zu dem Schluß zu kommen, seine eigenen.
Eigentlich hatte ich es als (array). Ich habe nur geändert, weil ich war immer ein Fehler bei der Ausführung des Programms. Also mit dem (array) fest, bekomme ich eine Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Assignment1.merge(Assignment1.java:39) at Assignment1.verschmilzt(Assignment1.java:24) at Assignment1.verschmilzt(Assignment1.java:23) at Assignment1.Sortieren(Assignment1.java:14) at Assignment1.main(Assignment1.java:82)
array[]
? Was denken Sie, die []
? Und warum denken Sie so?nur-array ohne []
sarkastisch und kritisch ist nicht hilfreich. Lass ihn wissen, dass er hier falsch ist, statt zu kritisieren.
Sotirios Delimanolis' Fragen sind gültig und lohnt sich. Wenn die OP reflektiert und beantwortet, kann er zu dem Schluß zu kommen, seine eigenen.
Eigentlich hatte ich es als (array). Ich habe nur geändert, weil ich war immer ein Fehler bei der Ausführung des Programms. Also mit dem (array) fest, bekomme ich eine Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Assignment1.merge(Assignment1.java:39) at Assignment1.verschmilzt(Assignment1.java:24) at Assignment1.verschmilzt(Assignment1.java:23) at Assignment1.Sortieren(Assignment1.java:14) at Assignment1.main(Assignment1.java:82)
InformationsquelleAutor ShengLong916 | 2014-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, dass der compiler denkt, dass Sie versuchen, übergeben Sie ein Klasse Typ in
sort
weil Sie die[]
nach array in Ihrem Aufrufsort
ist, wie Sie ein array deklarieren, geben.Nur ändern
zu
da Sie bereits initialisiert
array
alsint[]
type/array-früher in Ihrer Methode.Müssen Sie nur fügen Sie die
[]
während der Initialisierung. Danach den Namen der variable für ein array referenziert werden, genauso wie die Variablennamen für jede andere variable.InformationsquelleAutor mdewitt
Ihre
sort (int[] vals)
nimmt eineint[]
parameter.Ihre
int[] array
ist bereits von dieser Art, und Sie müssen einfach passierenarray
von selbst. Der name der variable istarray
und seine Art istint[]
. Wenn Sie übergeben die variable an eine Funktion, Sie nennen es durch seinen Namen. Es gibt keine "array[]
", das ist kein gültiges Konstrukt.Syntaktisch,
array[]
ungültig ist, aber rein hypothetisch, wenn es gilt, die Art, die ich mir vorstellen, es wäre istint
(der Typ von einem der Elemente) nichtint[]
.".erwartete Klasse" compiler-Fehlermeldung ist irreführend. Die
array[]
syntax ungültig ist, und ich denke, der compiler Verwirrung führt zu einer unerwarteten Fehlermeldung (edit: gute Erklärung für den Fehler gegeben, in mdewitt und die Antworten von meriton).Durch die Art und Weise, die Java unterstützt die syntax
int array[];
als äquivalentint[] array;
. Ich persönlich mochte nie diese Mehrdeutigkeit und ich benutze die frühere syntax, wo möglich. Wenn Sie sehen, dass diese syntax nicht verwechselt werden -- der name ist nocharray
ist und der Typ nochint[]
.InformationsquelleAutor Jason C
Das bedeutet, dass der Fehler in Zeile 82 Assignment1.java. Diese Zeile liest:
denen klar ist keine gültige java-syntax. Sie können nicht postfix eine variable mit einer leeren eckigen Klammern. Wenn du meinst, übergeben Sie das array-Objekt, verwenden Sie einfach die variable von selbst:
Anders ausgedrückt, es gibt keine spezielle syntax für ein array übergeben. Sie können übergeben Sie ein array wie jedes andere Objekt oder einen primitiven Wert.
Leeren eckigen Klammern kann nur verwendet werden, bezeichnen ein array-Typ, in dem Fall Folgen Sie den Komponententyp an. Wenn, die wir nehmen, die interpretation, die
array
wäre ein Typ lieber, als eine variable, undarray[]
würde bedeuten ein Typ eher als ein Ausdruck. Natürlich, Sie können nicht passieren Sie eine type in eine Methode parameter, aber Sie könnte passieren das Klassenobjekt für diesen Typ:Das ist, was der compiler denkt, dass Sie zu tun versuchen. Das ist natürlich Unsinn, denn dies wäre nicht sein Typ richtig ist, wie die sort-Methoden erwarten ein array statt einem Objekt der Klasse, und das array nicht bezeichnen, eine Art zu beginnen. Anders ausgedrückt, der compiler erraten falsch, was Sie sagen, und deshalb verwechselt Sie mit einem unabhängigen Fehlermeldung.
InformationsquelleAutor meriton