|
Hi Richard.
I'm going to try the get/set and other methods to find a way around this.
I thought I had sent this on the C# forum....my mistake.
Brian
|
|
|
|
|
The use of get/set is to hide the actual variables from the outside users, it has nothing to do with global variables. What you really should be doing is finding how to move all the variables inside the classes that require them.
|
|
|
|
|
Hi Richard.
I started by using procedures but then found that I was adding a lot of variables to the procedure.
Here is an example
public void GameUpdate(int Score, int PlayerHealth, int PlayerLoad, String [] RoomName, String [] RoomDescription, int CurrentRoom, String [] ObjectName, int [] ObjectLoc, int GameCounter, int numObjects)
I then tried a better way so all I had to do was call the procedure as I needed to call this procedure several times during the game.
public void GameUpdate()
but as Global variables are not possible then I may have to look at using classes.
My variables such as RoomName needs to be used in several classes so if I was to use
Inventory ADV = new Inventory;
ADV.ObjectLocation = 3;
than as far as I know ADV can only be used in the Inventory class and not other classes.
Brian
|
|
|
|
|
If you need to pass that many variables then you need to look at the design of your classes. For example, you have a number of variables referring to a Room, so why not just pass a Room object that contains all those values?
|
|
|
|
|
Hi Richard.
In your reply you wrote
If you need to pass that many variables then you need to look at the design of your classes. For example, you have a number of variables referring to a Room, so why not just pass a Room object that contains all those values?
Can you please provide a quick example to make sure that I fully understand your suggestion.
Brian
|
|
|
|
|
As I have mentioned a number of times, you need to study some good learning materials and reference guides, for example, the two publications I previously recommended. Object Oriented Programming is all about the use of classes to encapsulate the properties and methods required to manipulate an object. If you still don't fully understand that then you will struggle with any programming task.
|
|
|
|
|
I know what your saying Richard.
Some books tend to get out of date for example I was reading a Microsoft book on C# that keep referring to code. To see the code they were referring to I needed to go to the web page printed in the book. The problem is that the web page no longer exists.
I have managed to find useful articles on C# on the internet by typing questions into Google.
Some internet Tutors are good but only if the tutor is good at teaching as some tend to skip over important things and teach at a fast speed. I find myself having to write down the code they are teaching.
The best teachings I've found in the past is those that make it fun to learn such as building a project step-by-step which could be a game and having diagrams that show how things flow.
Brian
|
|
|
|
|
Although nothing like learning by experience though. I can remember quite a few messed up code messes I made much better than the books I read that told me not to do it like that in the first place (and I suspect the author is doing this for himself, so only he needs to maintain it.)
|
|
|
|
|
|
Richard, I agree with you in principle, but there are times where Global values are present, fo r example when I need units conversion factors, I like to declare them globally so they have a name, rather than coding the numbers directly into the equations and leave future observers confused at why 36000 is in the calculation, it;s better to write Secondsperhour instead of 3600 as a magic number for future readability and the seconds per hour won't change ever!
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
|
Thanks Maciej for the links. I was trying to find some solutions today on the internet.
I also read today that you can use this:
public class SomeGlobalVariables()
{
public static int SomeVariable = 10;
}
then to access it use
SomeGlobalVariables.SomeVariable;
I have not tried this yet.
Brian
|
|
|
|
|
When I absolutely need global variables in C# or Java, I simply create a normal class I name it lobalpublic Globa l with the variables and include it in all the other classes. simple enough!
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
I need source code on java for home automation using iot for my university final year project.functionality on the basis of 4 channel relay module(3 light switch ,and 1 fan switch).
please help me.
Email id :[DELETED]@gmail.com
|
|
|
|
|
Two things:
1) Never post your email address in any forum, unless you really like spam! If anyone replies to you, you will receive an email to let you know.
2) We are more than willing to help those that are stuck: but that doesn't mean that we are here to do it all for you! We can't do all the work, you are either getting paid for this, or it's part of your grades and it wouldn't be at all fair for us to do it all for you.
So we need you to do the work, and we will help you when you get stuck. That doesn't mean we will give you a step by step solution you can hand in!
Start by explaining where you are at the moment, and what the next step in the process is. Then tell us what you have tried to get that next step working, and what happened when you did.
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Member 14176431 wrote: please help me
Google. And hope your professor has never heard of google.
|
|
|
|
|
I'm trying to implement a method that will store all words in a Trie data structure in a List.
This is my Node class:
class Node {
char c;
HashMap<Character, Node> children = new HashMap<Character, Node>();
boolean isCompleteWord;
public Node(char c) {
this.c = c;
isCompleteWord = false;
}
public Node() {
}
}
I am using a HashMap to store the child characters as keys and the child nodes as values. A node that completes a word will have the field isCompleteWord set to true.
Methods to add all words to a List:
List<String> collectWords(char c) {
List<String> words = new ArrayList<>();
String word = Character.toString(c);
Node node = root.children.get(c);
collectWordsHelper(words, node, word);
return words;
}
void collectWordsHelper(List<String> words, Node node, String word) {
for (char i = 'a'; i <= 'z'; i++) {
if (node.children.containsKey(i)) {
System.out.println(i);
Node child = node.children.get(i);
word += i;
if (child.isCompleteWord && !words.contains(word)) {
words.add(word);
collectWordsHelper(words, child, "");
}
collectWordsHelper(words, child, word);
}
}
}
Currently if I have stored in the Trie the words "beard", "bold", "brew", when I print the list of words starting with the prefix "b", I get:
[beard, beold, beorew]
What I was expecting:
[beard, bold, brew]
I think I need a way for the String word to be reset whenever I have found a word, instead of the next characters being appended.
|
|
|
|
|
Not sure I understand your code, but you seem to be treating single characters as words. And you are adding characters to the end of a word in your collectWordsHelper method. I would have thought that a Dictionary<char, List<string>> would be an easier method. The Dictionary is keyed off the first character of the word(s) and the List contains all the words.
|
|
|
|
|
Hello, How to solve this in Java? Generate random simple directed acyclic graph that user inserts the vertex number that each vertex has no less than K-min and not more than K-max neighbours of each vertex. In addition create function in program for given graph insertion and generated graph presentation by user(to print the graph). Generated graph is stored in adjacency list using one-dimensional array. In addtion, according to breadth-first search algortihtm find which vertex is farthest(longest path) from the given vertex and find the path distance. Print the found path between vertices. If there are some vertices, it is enough one.
|
|
|
|
|
According to the Java web page Java 8 is for Windows 8.1 and Java 9 has been removed.
I'm following a book on Java that uses the JShell command. JShell is found in Java 9 and versions onwards.
I did manage to find Java 10 and install it but when I type Java -version I get version 1.8.0_201-b09.
Is there a way to tell my computer to run Java 10 and not the previously install Java?
Brian
|
|
|
|
|
You need to check the PATH environment variable to see which Java version it points to, and adjust as necessary. On my system I have the following:
Directory of C:\Program Files\Java
20/01/2019 15:42 <DIR> .
20/01/2019 15:42 <DIR> ..
20/01/2019 15:43 <DIR> jdk-11.0.2
24/05/2017 17:14 <DIR> jdk1.8.0_131
23/01/2018 13:09 <DIR> jdk1.8.0_162
20/01/2019 15:16 <DIR> jre1.8.0_201
And my path variable points to C:\Program Files\Java\jdk-11.0.2\bin . And when I type java -version I get
C:\Users\rjmac\Documents\Code\Java>java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
As far as I know (and in my experience) Java versions are not tied to Windows versions. I used Java 8 for quite a long time under Windows 10 without problems.
|
|
|
|
|
Thanks Richard.
By renaming the jdk folder on the C drive I found that the path points to the C drive as I got an error when typing in Java in the Dos prompt as it could not find the folder I had renamed.
I have installed other versions of Java on my F drive.
I need to know how to change the path to look at Java version 11 on my F drive.
I can create a tenp path by typing in SET PATH = on the Dos prompt but I need a permanent path.
I'm using Windows 8.1 (64 bit version).
Brian
|
|
|
|
|
You can check and modify the system environment variables through the control panel. Go to Control Panel -> System and Security -> System , and select Advance System Settings . Next click the Environment Variables button, and you cna modify the existing settings. Note: theses instructions are for Windows 10, so the actual route may be slightly different on 8.1, but the basics are the same.
|
|
|
|
|
Thanks Richard.
I'll try what you have suggested.
Brian
|
|
|
|
|