01. december 2008 - 05:28Der er
8 kommentarer og 1 løsning
Java: odd or even numbers
Hej alle.
Jeg er ved at lave et progrsm med arrays, der til sidst tæller sammen hvor mange lige og ulige tal, man har tastet ind. Umiddelbart ser programmet fint ud, men jeg får en fejlkode ved if-statement under 'i'.
Nogle der umiddelbart kan se problemet?
Hilsen Michael
import java.util.*;
public class A122 { public static void main (String[] args) { final int MAXSIZE = 10; Scanner keyboard = new Scanner(System.in); int number[] = new int[MAXSIZE]; String inputValue; int amountNum=0; int OddCount=0; int EvenCount=0;
System.out.print("Enter 10 numbers or EXIT to stop: "); inputValue = keyboard.nextLine(); while (!inputValue.toUpperCase().equals("EXIT")) { number[amountNum++]=Integer.parseInt(inputValue); System.out.print("Enter a number or EXIT to stop: "); inputValue = keyboard.nextLine(); }
for (int i=0;i<number.length;i++) System.out.println(number[i]);
if(number[i] % 2 == 1) OddCount++;
else EvenCount++;
System.out.println("You have " + OddCount + " odd numbers.");
System.out.println("You have " + EvenCount + " even numbers."); } }
Jeg har prøvet med det der blev skrevet, så nu ser min kode således ud. Jeg får dog stadig en rød fejl-linie under i'et i mit if-statement.
import java.util.*; import java.util.Scanner;
public class A122 { public static void main (String[] args) { final int MAXSIZE = 10; Scanner keyboard = new Scanner(System.in); int number[] = new int[MAXSIZE]; String inputValue; int amountNum=0; int OddCount=0; int EvenCount=0;
System.out.print("Enter 10 numbers or EXIT to stop: "); inputValue = keyboard.nextLine(); while (!inputValue.toUpperCase().equals("EXIT")) { number[amountNum++]=Integer.parseInt(inputValue); System.out.print("Enter a number or EXIT to stop: "); inputValue = keyboard.nextLine(); }
Dine if'er skal med under din forløkke, i er kun defineret i scope af for. Dette kode: for (int i=0;i<number.length;i++){ System.out.println(number[i]); } if(number[i] % 2 == 1){ OddCount++; } else{ EvenCount++; }
Skal laves om til: for (int i=0;i<number.length;i++){ System.out.println(number[i]); if(number[i] % 2 == 1){ OddCount++; } else{ EvenCount++; } }
Så skal du bruge en ArrayList i stedet for et array. En ArrayList har en add metode som tilføjer et nyt element. Der er ingen umiddelbar grænse på hvor mange elementer du kan putte i den:
import java.util.*; import java.util.Scanner;
public class A122 { public static void main (String[] args) { Scanner keyboard = new Scanner(System.in); ArrayList<Integer> number = new ArrayList<Integer>(); String inputValue; int amountNum=0; int OddCount=0; int EvenCount=0;
System.out.print("Enter some numbers or EXIT to stop: "); inputValue = keyboard.nextLine(); while (!inputValue.toUpperCase().equals("EXIT")) { number.add(Integer.parseInt(inputValue)); System.out.print("Enter a number or EXIT to stop: "); inputValue = keyboard.nextLine(); }
System.out.println("You have " + OddCount + " odd numbers.");
System.out.println("You have " + EvenCount + " even numbers."); } }
Her har jeg lavet så lidt som muligt om på din kode. Du kunne med fordel udskifte for-løkken som tæller lige/ulige tal med en for-in løkke. Der er i øvrigt tradition for at man i java altid starter et navn på en variabel med et lille bogstav. EvenCount bør således hedde evenCount...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.