java, absolute beginner, błąd w programie

0

Program ma zamieniać wielką literę na małą i to robi dobrze.
Dlaczego jednak przy drugiej próbie i kolejnych próbach napis "Enter a letter" pojawia się zawsze po dwa razy?
Jak to poprawić?

package com.mycompany.mavenproject2;

public class test1 {
    public static void main (String args[]) throws java.io.IOException {
        
        char ch;       
        for(;;){
            System.out.println("Enter a letter");
            ch = (char) System.in.read();
            
             if(ch > 64 & ch < 91){
                ch += 32;
                System.out.println(ch);                               
            }
        }
    }           
}
0

Użyj może readln() zamiast read()

0
opiszon napisał(a):

Użyj może readln() zamiast read()

Niestety nie kompiluje się.

0

Oczywiscie że się nie kompiluje, bo zwraca String a nie char...

0

wczytujesz do bufora 2 znaki naciskajac klawisz, wiec albo walnij drugie sczytanie chara albo znajdz inny pomysl

0

dzięki

0
Drozd napisał(a):

dzięki

Teraz działa dobrze:

public class test1 {
    public static void main (String args[])throws java.io.IOException {
        
        char ch;       
        for(;;){
            System.out.println("Enter a letter");
            for(;;){
            ch = (char) System.in.read();
             if(ch > 64 & ch < 91){
                ch += 32;
                System.out.println(ch);  
                System.out.println("Enter a letter");
            }
            }
        }
    }           
}
0
Drozd napisał(a):
Drozd napisał(a):

dzięki

Teraz działa dobrze:

public class test1 {
    public static void main (String args[])throws java.io.IOException {
        
        char ch;       
        for(;;){
            System.out.println("Enter a letter");
            for(;;){
            ch = (char) System.in.read();
             if(ch > 64 & ch < 91){
                ch += 32;
                System.out.println(ch);  
                System.out.println("Enter a letter");
            }
            }
        }
    }           
}
Drozd napisał(a):
Drozd napisał(a):

dzięki

Teraz działa dobrze:

public class test1 {
    public static void main (String args[])throws java.io.IOException {
        
        char ch;       
        for(;;){
            System.out.println("Enter a letter");
            for(;;){
            ch = (char) System.in.read();
             if(ch > 64 & ch < 91){
                ch += 32;
                System.out.println(ch);  
                System.out.println("Enter a letter");
            }
            }
        }
    }           
}

dzięki!

0

Działą moze i dobrze ale na boga czemu petla w petli.
Zastanów sie nad tym i popraw to zeby dzialalo to w jednej petli.

0
Ziemiak napisał(a):

Działą moze i dobrze ale na boga czemu petla w petli.
Zastanów sie nad tym i popraw to zeby dzialalo to w jednej petli.

Nawet nie wiedziałem, że to niedobrze, że jest pętla w pętli. Dzięki za komentarz.

0

Czy próbowałeś wpisać kilka liter?

Wg mnie potrzebujesz coś na kształt:

import java.util.*;
import java.lang.*;
import java.io.*;

class Ideone
{
	public static Scanner sc=new Scanner(System.in);
	public static void main (String[] args) throws java.lang.Exception
	{
        while(true)
        {
        	System.out.print("Enter a letters: ");
            if(!sc.hasNextLine()) break;
            //for(char ch:sc.nextLine().toCharArray()) System.out.print(Character.isUpperCase(ch)?Character.toLowerCase(ch):'_');
            for(char ch:sc.nextLine().toCharArray()) System.out.print(Character.toLowerCase(ch));
            System.out.println();
        }
	}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1