02. januar 2001 - 14:22Der er
7 kommentarer og 1 løsning
skal finde samme integers
Hvordan finder jeg ud af, om et tal går igen i samme inputværdi? Eks. inputvaerdi=12343 (3 går igen) Det ser ikke ud som om jeg kan modtage vaerdien som en integer, da jeg ikke kender til nogen metode, der kan undersøge dette. Så prøvede jeg at modtage vaerdien som en String, fordi jeg ville bruge charAt således: for (int i=0;i<value.length();i++) if (value.charAt(i)==i) same++;
Jeg har lige klasket nedenstående kode sammen. Det er helt sikkert ikke den bedste løsning, men den var hurtig :) Check hellere, at det virker før du bruger det. ---------------------------- public checkCiphers(String number) { boolean ciphers[]=new boolean[]{true,true,true,true,true,true,true,true,true,true}; int t=0; while (t<number.length() && ciphers[number.charAt(t)-48]) ciphers[number.charAt(t++)-48]=false; if (t==number.length()) System.out.println(\"Tallet havde ingen gentagende cifre\"); else System.out.println(\"Tallet havde et ciffer, der gentog sig\"); } ----------------------------
Du kan godt gøre det uden at skulle bruge en streng som input, men det fik jeg ikke liiige gjort her...
Nedenstående metode returnerer true, hvis et ciffer gentager sig. ----------------------------------------- public boolean checkCiphers(String number) { boolean ciphers[]=new boolean[]{true,true,true,true,true,true,true,true,true,true}; int t=0; while (t<number.length() && ciphers[number.charAt(t)-48]) ciphers[number.charAt(t++)-48]=false; return (t!=number.length()); }
Som pathetic \"siger\" det er ikke nødvendigt med 2 løkker, det andet er jo lidt smartere. Jeg glemte lige at bemærke at Integer.parseInt kaster en NumberFormatException hvis det er bogstaver man prøver at konvertere.
Du kan også bruge findDubletter fra dette lille program:
import java.io.*;
public class FindGentagneCifre { private final static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
public static void main(final String[] args) { FindGentagneCifre find = new FindGentagneCifre(); System.out.println(\"Indtast et tal: \"); String s = \"\"; try { s = in.readLine(); } catch (IOException e) {} if (find.findDubletter(s)) { System.out.println(\"Der er dubletter\"); } else { System.out.println(\"Der er ingen dubletter\"); } }
public boolean findDubletter(final String s) { for (int i=0; i<s.length(); i++) { if (s.indexOf(s.charAt(i), i+1)>0) { return true; } } return false; } }
for (int i=0;i<value.length();i++) if (value.charAt(i)==i) same++; Din kode er næsten rigtig se nedenfor du laver en lille fejl... for (int i=0;i<value.length();i++) if (value.charAt(i)==\'i\') //HUSK GNYFFER OM I same++;
Hele koden så du bare kan cut paste for at se at det funger nu. Husk ikke \" men \'
public class test
{public static void main(String[] args) { int same =0; String value =\"ininn\"; for (int i=0;i<value.length();i++) if (value.charAt(i)==\'i\') same++; System.out.println(same); } }
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.