|
The print statements suggest that the value is correct at the point you call drawString . So the only conclusion must be that some other code is overwriting it elsewhere. However, with such a small code sample in your question it is impossible to guess anything more. If you are using Netbeans or Eclipse as your IDE then I think they both support interactive debugging (Eclipse definitely does). If not then you can use jdb - The Java Debugger[^].
|
|
|
|
|
The fact is I do not know how to use jdb or debugger to spot code overwrite errors. I tried looking on the web, I could not find any. Do you or someone know how to use gbd to spot code overwrite errors? or guide me to a document or example where it is done?
|
|
|
|
|
Sorry, but it is impossible to teach you debugging in a technical form. It is a technique that you really need to learn for yourself, either from online tutorials, or by attending a training course. Time spent learning now will assist you in your future efforts. I already gave you a link to the online documentation, so you can start with that.
|
|
|
|
|
I am working in PSO for feature selection. I use KNN algorithm with 10 cross validation for the evaluation. before I use the 10cv the algorithm is quite cheap meaning no high computational cost has been faced, but after turning to 10cv the code is running too slow, sometimes for days. may I know if there is any problem in performing the 10cv. I use the following code to perform 10 cv:
dataset data = FileHandler.loadDataset(new File(dataSetFileName+".csv"), noFeatures, ",");
int[][] crossvalidationmat= {
{1,2,3,4,5,6,7,8,9},
{0,2,3,4,5,6,7,8,9},
{0,1,3,4,5,6,7,8,9},
{0,1,2,4,5,6,7,8,9},
{0,1,2,3,5,6,7,8,9},
{0,1,2,3,4,6,7,8,9},
{0,1,2,3,4,5,7,8,9},
{0,1,2,3,4,5,6,8,9},
{0,1,2,3,4,5,6,7,9},
{0,1,2,3,4,5,6,7,8},
};
Dataset[] folds = data.folds((10), new Random(1));
Dataset training = new DefaultDataset();
Dataset testing = new DefaultDataset();
int[] tr =new int[9];
int[] te = new int[1];
for (int di = 0; di < crossvalidationmat.length; di++) {
System.out.println(crossvalidationmat[di].length);
for (int xj = 0; xj < crossvalidationmat[di].length; xj++) {
tr[xj]=crossvalidationmat[di][xj];
System.out.print(tr[xj]);
}
te[0]=di;
System.out.println("\nTraing te[0]=di here: "+te[0]);
for (int i = 0; i < tr.length; i++) {
training.addAll(folds[tr[i]]);
}
for (int i = 0; i < te.length; i++) {
testing.addAll(folds[te[i]]);
}
Dataset[] foldsTrain = training.folds(numFolds, new Random(1));
}
|
|
|
|
|
I just found out that you can't have global variables in C#. I think they are supported in other languages like C, C++, Python and maybe Visual Basic.Net.
The program I want to convert to C# has a lot of variables that need to be used in other parts of the program such as procedures. I know you can add variables within the curly brackets for a procedure but in many cases the procedure needs to know about a lot of the variables to function and give a result and the same procedures are used many times in the code. I could use classes but I don't think you can have use the same variable in more than one class.
I'll need to experiment a bit to see if there is anyway around this.
Brian
|
|
|
|
|
You are right, you cannot have global variables, and for good reasons. If a procedure needs access to variables then they should either be declared at the class level (and accessed through the get/set mechanism), or passed in from the calling process(es). Don't try to work round this by hacks, you will just end up down a blind alley, or worse, a buggy application.
Also, please use the correct forum for your questions; this one is for Java not C#.
|
|
|
|
|
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.
|
|
|
|
|