Hoppa till innehåll

Just nu i M3-Nätverket
Foto

Omvandla siffror till bokstäver


  • Vänligen logga in för att kunna svara
7 svar till detta ämne

#1 Jompan

Jompan

    Aktiv

  • Medlemmar
  • PipPipPip
  • 207 inlägg
  • Ort:Katrineholm

Postad 1 mars 2017 klockan 09:19

Jag har en liksidig triangel som ska skrivas ut i höjd och bredd enligt det antal rader som användaren anger.

Nu vill jag ändra siffran till att motsvara en bokstav.

1 = A, 2 = B osv

 

Med nuvarande kod blir resultatet så här vid valet 4 för antalet:

 

1

12

123

1234

 

Men jag vill presentera svaret så här i stället:

 

A

AB

ABC

ABCD

 

Jag har försökt med att lägga till en counter och omvandla int till char:

counter = 0;

char letter = (char)(counter + A);

System.out.println (letter);

 

Men då blir effekten bara att varje rad får ett tillägg med A.

 

Så här ser min kod ut i Java.

import java.util.Scanner;
public class Triangle {
	
public static void main(String[] args) {
	System.out.println("Ange längden för de två sidorna i den rätvinkliga triangeln. ");
	java.util.Scanner scan = new java.util.Scanner (System.in);
		
	int nr = scan.nextInt();
		for (int i = 1; i <= nr; i++)
			{
			for (int j = 1; j <= i; j++)
				System.out.print(j + " ");	
				System.out.println();
			}
	}
}



#2 Mr Andersson

Mr Andersson

    Beroende

  • Medlemmar
  • PipPipPipPipPipPip
  • 12 784 inlägg

Postad 1 mars 2017 klockan 10:03

Förmodligen ville du ha ascii-värdet för A och det är 65: 

 

ounter = 0;

char letter = (char)(counter + 65);

System.out.println (letter);



#3 Jompan

Jompan

    Aktiv

  • Medlemmar
  • PipPipPip
  • 207 inlägg
  • Ort:Katrineholm

Postad 1 mars 2017 klockan 10:08

Nej, det blir tyvärr ingen förbättring. Raderna avslutas fortfarande med ett enkelt 'A' efter siffrorna.

import java.util.Scanner;
public class Triangle {
	
public static void main(String[] args) {
	System.out.println("Ange längden för de två sidorna i den rätvinkliga triangeln. ");
	java.util.Scanner scan = new java.util.Scanner (System.in);
		
	int nr = scan.nextInt();
	
	int counter = 0;
	char letter = (char)(counter + 65);

		for (int i = 1; i <= nr; i++)
			{
			for (int j = 1; j <= i; j++)
				System.out.print(j + " ");	
				System.out.println(letter);
			}
	}
}



#4 Cecilia

Cecilia

    Beroende

  • Huvudmoderator
  • 91 918 inlägg
  • Ort:Stockholm

Postad 1 mars 2017 klockan 10:31

Du ändrar ju aldrig letter utan det är ju alltid 65.



#5 Jompan

Jompan

    Aktiv

  • Medlemmar
  • PipPipPip
  • 207 inlägg
  • Ort:Katrineholm

Postad 1 mars 2017 klockan 10:42

Nu har jag filat litet mer på koden, men får fortfarande samma resultat: ett enkelt A läggs till i slutet av varje rad.

import java.util.Scanner;
public class Triangle {
	
public static void main(String[] args) {
	System.out.println("Ange längden för de två sidorna i den rätvinkliga triangeln. ");
	java.util.Scanner scan = new java.util.Scanner (System.in);
		
	int tal = scan.nextInt();
	int j = 0;
	
	int counter = 0;
	char letter = (char)(counter + 65);

		for (int i = 1; i <= tal; i++)
			{
			for (j = 1; j <= i; j++)
				counter++;
				System.out.print(j + " ");	

			System.out.println(letter);
			}
	}
}



#6 Cecilia

Cecilia

    Beroende

  • Huvudmoderator
  • 91 918 inlägg
  • Ort:Stockholm

Postad 1 mars 2017 klockan 12:49

Ja, du skriver ju fortfarande ut letter som alltid är 65.



#7 Jompan

Jompan

    Aktiv

  • Medlemmar
  • PipPipPip
  • 207 inlägg
  • Ort:Katrineholm

Postad 2 mars 2017 klockan 11:43

Nu har jag försökt ändra/justera litet. Och resultatet rullar fint såtillvida att siffrorna räknar fram. Men de är just siffror som inte översätts till bokstäver. I stället för A så printas 65, B så printas 66. Hur kan jag få vidare?

 

(Jag var tvungen att lägga in en ny nettovariabel för det inlästa talet, eftersom konsolen visade en rad och en position för mycket.)

import java.util.Scanner;
public class TestarIgen {
	
public static void main(String[] args) {
	System.out.println("Ange längden för de två sidorna i den rätvinkliga triangeln. ");
	java.util.Scanner scan = new java.util.Scanner (System.in);
		
	int tal1 = scan.nextInt();
	int tal2 = tal1 - 1;
	
	int i = 0;
	int j = 'A';
	char letter = (char)(j + 'A');
	
		for (i = 1; i <=tal2 +'A'; i++)
			{
			for (j = 'A'; j <= i; j++)
				System.out.print(j + " ");	
				System.out.println(letter);
			}
	}
}


#8 Cecilia

Cecilia

    Beroende

  • Huvudmoderator
  • 91 918 inlägg
  • Ort:Stockholm

Postad 2 mars 2017 klockan 13:03

Du behöver göra om j från en siffra till ett tecken, dvs använda (char).

 

Jag förstår fortfarande inte syftet med variabeln letter, särskilt inte nu när det har värdet 130 eller något sånt.

 

Det ser inte så bra ut att först tilldela "i" ett värde och sen tilldela det ett nytt utan att det första har använts.

 

Sen verkar villkoret för i-loopen konstigt. Har du verkligen tänkt igenom hur många varv som loopen ska gå, vad blir villkoret om någon anger talet 2 ?

När du har rättat det måste du se till j-loopens villkor blir korrekt.






0 användare läser detta ämne

0 medlemmar, 0 gäster, 0 anonyma medlemmar

Hetast just nu


 

Senaste trådarna

pc för alla Senaste nytt


Prenumerera på nyheter

Missa inte PC för Allas
smarta nyhetsbrev
Läs mer om nyhetsbreven här!
Beställ brevet här
PC för Alla-nätverket