Jompan Postad 1 mars, 2017 Share Postad 1 mars, 2017 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(); } } } Länk till kommentar Dela på andra webbplatser More sharing options...
Mr Andersson Postad 1 mars, 2017 Share Postad 1 mars, 2017 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); Länk till kommentar Dela på andra webbplatser More sharing options...
Jompan Postad 1 mars, 2017 Trådskapare Share Postad 1 mars, 2017 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); } } } Länk till kommentar Dela på andra webbplatser More sharing options...
Cecilia Postad 1 mars, 2017 Share Postad 1 mars, 2017 Du ändrar ju aldrig letter utan det är ju alltid 65. Länk till kommentar Dela på andra webbplatser More sharing options...
Jompan Postad 1 mars, 2017 Trådskapare Share Postad 1 mars, 2017 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); } } } Länk till kommentar Dela på andra webbplatser More sharing options...
Cecilia Postad 1 mars, 2017 Share Postad 1 mars, 2017 Ja, du skriver ju fortfarande ut letter som alltid är 65. Länk till kommentar Dela på andra webbplatser More sharing options...
Jompan Postad 2 mars, 2017 Trådskapare Share Postad 2 mars, 2017 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); } } } Länk till kommentar Dela på andra webbplatser More sharing options...
Cecilia Postad 2 mars, 2017 Share Postad 2 mars, 2017 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. Länk till kommentar Dela på andra webbplatser More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.