Just nu i M3-nätverket
Gå till innehåll
Jompan

Omvandla siffror till bokstäver

Rekommendera Poster

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();
			}
	}
}

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

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);
			}
	}
}

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

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);
			}
	}
}

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

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);
			}
	}
}

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

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.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×