我的任务是三个不同的第三个。在我的情况下,我认为我差不多完成了,但是我的程序的最后一行出现了编译错误。我将打印它所在的整个方法:
void ordParInn(Scanner innfil, int antOrd, int antUnikeOrd, String[] ord) {
int[][] ordParTelling = new int[antOrd][antOrd];
int sc1, sc2;
String forrigeOrd = "";
sc1 = 0;
sc2 = 0;
while (innfil.hasNext()) {
String ordLest = innfil.next().toLowerCase();
for (int i = 0; i < ord.length; i++) {
sc1 = Arrays.asList(antUnikeOrd).indexOf(ordLest);
sc2 = Arrays.asList(antUnikeOrd).indexOf(forrigeOrd);
if (sc1 > 0 && sc2 > 0) {
ordParTelling[sc2][sc1]++;
}
forrigeOrd = ordLest;
}
int alice = Arrays.asList(antUnikeOrd).indexOf("Alice");
for (int i = 0; i < antUnikeOrd; i++) {
if (ordParTelling[alice][i] > 0) {
System.out.print(ordParTelling[alice][i]);
//On the underneath line the error occurs, at the antUnikeOrd[i]
System.out.print(" " + antUnikeOrd[i] + " " + Arrays.asList(antUnikeOrd).indexOf(antUnikeOrd));
}
}
}
}
请帮忙。 整个代码:
import java.util.*;
import java.io.*;
class Oblig3C{
public static void main(String[]args){
OrdAnalyse oa = new OrdAnalyse();
String filArgs=args[0];
oa.analyseMetode(filArgs);
}
}
class OrdAnalyse{
void analyseMetode(String filArgs){
//Begynner med aa opprette alle variabler som trengs, disse deklareres rett under. De ligger her oppe bare for at jeg skal ha oversikten over de.
Scanner input, innfil;
String[] ord;
int[] antall;
int antUnikeOrd, antOrd;
PrintWriter utfil;
boolean sjekk;
//Deklarerer alle bortsett fra de som har med fil aa gjore, disse deklareres inne i en try-catch-loop (printwriter utfil og scanner innfil).
input=new Scanner(System.in);
ord=new String[5000];
antall=new int[5000];
antUnikeOrd=0;
antOrd=0;
sjekk=true;
try{
innfil=new Scanner(new File(filArgs));
//Naa sjekker programmet om ordet som blir lest med Scanner-metoden er lest for. Er det slik, saa oeker den antallet i samme index i antall-arrayen med 1, den boolske verdien sjekk blir true, og neste if-lokke vil ikke kjore, for loopen er ferdig og neste ord leses.
while(innfil.hasNext()){
String ordLest=innfil.next().toLowerCase();
sjekk=false;
for(int i=0; i<ord.length; i++){
if(ordLest.equals(ord[i])){
antall[i]+=1;
sjekk=true;
}
}
if(!sjekk){
//Her vil lokken oke telleren antUnikeOrd med en for hvert unike ord som leses, og denne er alltid en
ord[antUnikeOrd]=ordLest;
antall[antUnikeOrd]++;
antUnikeOrd++;
}
antOrd++;
}
innfil.close();
}catch(Exception e){
e.printStackTrace();
}
try{
utfil=new PrintWriter(new File("Oppsummering.txt"));
utfil.println("Antall ord lest: " +antOrd+ " og antall unike ord: "+antUnikeOrd+" "+ ord.length);
finnOrd(antall, ord, utfil);
for(int i=0; i<ord.length; i++){
utfil.println(ord[i]+(" ")+antall[i]);
}
utfil.close();
}catch(Exception e){
e.printStackTrace();
}
//Deklarerer metoden som skal brukes i c:
try{
innfil=new Scanner(new File(filArgs));
ordParInn(innfil, antOrd, antUnikeOrd, ord);
}catch(Exception e){
e.printStackTrace();
}
}
//Denne metoden er i bunn og grunn hele B-oppgaven.
void finnOrd(int[] antall, String[] ord, PrintWriter utfil){
int teller=1000;
for(int i=0; i<ord.length; i++){
if(antall[i]>teller){
teller=antall[i];
}
}
//Naa er teller lik den hoyeste verdien i antall-arrayen.
//For aa faa mellomrom mellom innskrivingene, for ordens skyld.
double tiprosent=teller*0.90;
for(int i=0; i<ord.length; i++){
if(antall[i]>tiprosent){
utfil.println("Vanlige ord: "+ord[i]+"\t("+antall[i]+" forekomster)");
}
}
}
//Denne metoden er C-oppgaven.
void ordParInn(Scanner innfil, int antOrd, int antUnikeOrd, String[] ord){
int [][] ordParTelling=new int[antOrd][antOrd];
int sc1,sc2;
String forrigeOrd="";
sc1=0;
sc2=0;
while(innfil.hasNext()){
String ordLest=innfil.next().toLowerCase();
for(int i=0; i<ord.length; i++){
sc1=Arrays.asList(antUnikeOrd).indexOf(ordLest);
sc2=Arrays.asList(antUnikeOrd).indexOf(forrigeOrd);
if(sc1>0 && sc2>0){
ordParTelling[sc2][sc1]++;
}
forrigeOrd=ordLest;
}
int alice=Arrays.asList(antUnikeOrd).indexOf("Alice");
for(int i=0; i<antUnikeOrd; i++){
if(ordParTelling[alice][i]>0){
System.out.print(ordParTelling[alice][i]);
System.out.print(" " + antUnikeOrd[i] + " " + Arrays.asList(antUnikeOrd).indexOf(antUnikeOrd));
}
}
}
}
}
错误:
Oblig3C.java:132: error: array required, but int found
System.out.print(" " + antUnikeOrd[i] + " " + Arrays.asList(antUnikeOrd).indexOf(antUnikeOrd));
^
1 error
答案 0 :(得分:0)
你的antUnikeOrd不是一个数组。写得像这样:
for (int i = 0; i < antUnikeOrd; i++) {
if (ordParTelling[alice][i] > 0) {
System.out.print(ordParTelling[alice][i]);
// On the underneath line the error occurs, at the
// antUnikeOrd[i]
System.out.print(" " + antUnikeOrd + " " + Arrays.asList(antUnikeOrd).indexOf(antUnikeOrd));
}
}
答案 1 :(得分:0)
antUnikeOrd是int
。
回想一下,数组是这样初始化的:
int[] arr = new int[5];
你的方法传递一个这样的int:
void method(int a) {
//Not legal
System.out.print(a[0]);
}
如果它作为数组传递,那么a[0]
将是合法的:
void method(int[] a) {
System.out.print(a[0]));
}