0

I'm a newbie to Java, so I'm sorry if this is a silly question. I'll post the code first, then explain my problem.

import java.util.Scanner;

class CharacterOperations{

    public void run(){
        System.out.println("1. toUpper");
        System.out.println("2. toLower");
        System.out.println("3. Alphabet");
        System.out.println("4. Quit");
        
        int input;
        Scanner sc = new Scanner(System.in);
        input = sc.nextInt();
        
        while (input == 1 || input == 2 || input == 3){
            input = sc.nextInt();
            if (input == 1){
                System.out.println(toUpper());
            }
        }
    }
    public void toUpper(char lowerCase){
        int decimal;
        decimal = (int) lowerCase - 32;
        if(decimal >= 65 && decimal <= 90){
            System.out.println( (char) decimal);
        }
        
    }
    public void toLower(char upperCase){
        int decimal;
        decimal = (int) upperCase + 32;
        if(decimal >= 97 && decimal <= 122){
            System.out.println( (char) decimal);
        }
    }
public void alphabet(char start, char end){
        int decimalStart = (int) start;
        int decimalEnd = (int) end;
        
        while(decimalStart != decimalEnd){
            
            if(( (int) start >= 65 && (int) start <= 90) && ( (int) end >= 97 && (int) end <= 122)){
                decimalStart = (int) start + 32;
                System.out.println( (char) decimalStart);
                start++;
            }
            else if(( (int) start >= 97 && (int) start <= 122) && ( (int) end >= 65 && (int) end <= 90)){
                decimalEnd = (int) end + 32;
                end = (char) decimalEnd;
                System.out.println( (char) decimalStart);
                start++;
            }
             else {
               decimalStart = (int) start;
                System.out.println( (char) start);
                start++;
            }
                
        }
        
    }
}

When the user inputs 1, 2, or 3 into the terminal window, I want the run method to call the toUpper, toLower, or alphabet method, respectively. The methods work properly when selected from an object (I'm using BlueJ) but I can't seem to properly call the methods within the run method. As the code stand now, I get the following error when I try to compile: "toUpper(char) in CharacterOperations cannot be applied to ()". I can't use the class Character from the Java library, nor can the class contain properties.
Can anyone tell me what I'm doing wrong?

2
Contributors
8
Replies
9
Views
6 Years
Discussion Span
Last Post by Mattox
0

The method toUpper has a parameter, when you call the method you are not sending it a parameter. Line 18 is where you call the toUpper method.
This is how is should look.

toUpper('a');

The reason why I took the System.out.println out of the code is because the method is void, which means it doesn't return anything that can be printed out. And because there is a print statement in the method.

0

Yes, actually. I didn't realize that calling toUpper doesn't seem to do anything until I've called the alphabet method, and toLower doesn't seem to do anything when called through the run method.

0

You can use the scanner to read in a char,

import java.util.*;

public class readInChar
{
    public static void main(String[] args)
	{
		Scanner scan = new Scanner(System.in);
		String s;
		char u; 
		System.out.println("Enter you char: ");
		s = scan.next();
		u = s.charAt(0);
		System.out.println(u);
	}
}

scan.next() returns a String, that's why I used the charAt(0) method. The 0 in this method refers to the first element in the String.
Include reading in the userChar in the while loop and send that a parameter in the method calls and you should be good to go.

0

That works for the first two methods, but I'm having trouble applying to the alphabet method.

else if(input == 3){
                String str;
                str = sc.next();
                char letter1 = str.charAt(0);
                String str2 = sc.next();
                char letter2 = str.charAt(0);
                alphabet(letter1, letter2);
                input = sc.nextInt();
                
            }

That yields a vertical blinking line that just keeps accepting user inputs.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.