•
•
•
•
What is DaniWeb IT Discussion Community?
You're currently browsing the Java section within the Software Development category of DaniWeb, a massive community of 392,099 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 3,831 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our Java advertiser: Lunarpages Java Web Hosting
Views: 699 | Replies: 9 | Solved
![]() |
•
•
Join Date: Jul 2007
Posts: 53
Reputation:
Rep Power: 2
Solved Threads: 2
I have been given a homework this is it:
I have chosen to attack this problem using the scanner class. The problem I have is at runtime just the word "word" is printed loads and loads of times and then an error message which is very long and I dont understand prints out.
This is my code
Any pointing in the right direction would be appreciated.
•
•
•
•
Homework 7
Due in your lab in week 10
For this homework you are expected to write one program, which consists of a main method and an insertWord() method.
You must work on the program outside the formal laboratory sessions. The program must be ready to be executed at the start of the scheduled laboratory session.
The problem
A sentence can be thought of as one or more words which are delimited by spaces.
For example: “A sentence is constructed with a series of words”
The first word is ‘A’ The second word is ‘sentence’
There are nine words in total
Java has a standard to index elements starting with 0. So the first word would be at position 0, the second word would be at position 1, etc
“A sentence is constructed with a series of words”
Index 0 1 2 3 4 5 6 7 8
We need to provide a method which will insert a word into a string. The method will take the sentence to be altered, the word to be inserted and the word index location to place the word. The method will return the result as a String.
Method signature:
public static String insertWord(String sentence, String word, int position)
Example program output:
String word = “NEW”;
String sentence = “A sentence is constructed with a series of words”;
String one = insertWord(sentence,word,0);
// one would contain: “NEW A sentence is constructed with a series of words”
String two = insertWord(sentence,word,3);
// two would contain: “A sentence is NEW constructed with a series of words”
String three = insertWord(sentence,word,9);
// two would contain: “A sentence is constructed with a series of words NEW”
// in cases where the range of values is outside the possible index range,
// i.e. less than 0 or greater than the index needed for adding the word
// to the end the string. The methods should in return the string unaltered.
String two = insertWord(sentence,word,-1);
// two would contain: “A sentence is constructed with a series of words”
String three = insertWord(sentence,word,10);
// two would contain: “A sentence is constructed with a series of words”
Hint:
There are two possible solutions to the problem:
Solution one involves looking at the methods of the string class, such as charAt and substring.
The other solution would be to use the scanner class, as discussed during the lectures.
Marking
Marking will test the behaviour of the method. If your method is not able to return the sting you will get a maximum of 2 marks. Your program does not have to deal with situations where the input string does not contain at least one word.
Mark Criteria
1 Inserting a word to index position 0
1 Inserting a word in the middle of the string
1 Inserting a word to the end of the string
1 String unaltered if negative index
1 String unaltered if index exceeds limit.
I have chosen to attack this problem using the scanner class. The problem I have is at runtime just the word "word" is printed loads and loads of times and then an error message which is very long and I dont understand prints out.
This is my code
import java.util.Scanner;
class HomeworkSeven
{
public static void main (String [] args)
{
String word = "new";
int position = 0;
String sentence = "A sentence is constructed with a series of words";
System.out.println(insertWord(sentence,word, position));
}
public static String insertWord(String sentence, String word, int position)
{
word = "NEW";
position = 0;
sentence = "A sentence is constructed with a series of words";
Scanner myScanner = new Scanner(sentence);
while (myScanner.hasNext())
{
word = myScanner.next();
position++;
}
for (int x = 0 ; x < position ; x++)
System.out.println(word);
return insertWord(sentence,word, position);
}
}Any pointing in the right direction would be appreciated.
You are merely scanning all the words and incrementing the position, but you don't do anything when you get to the position where the insertion is to take place. The for loop is just printing the last word found by the scanner "number of words" times.
You are also returning a recursive call back into the same function, which is definitely not what you want to do. You need to return the new sentence string (which you haven't created).
You are also returning a recursive call back into the same function, which is definitely not what you want to do. You need to return the new sentence string (which you haven't created).
Last edited by Ezzaral : Nov 27th, 2007 at 2:10 pm.
•
•
Join Date: Jul 2007
Posts: 53
Reputation:
Rep Power: 2
Solved Threads: 2
okay I have made a revision of my code. I know nothing is being outputted in my main class but have I created the new sentence? this one is a real head scratcher for me.
•
•
•
•
import java.util.Scanner;
class HomeworkSeven
{
public static void main (String [] args)
{
String word = "new";
String one = "A";
String two = "sentence";
String three = "is";
String four = "constructed";
String five = "with";
String six = "a";
String seven = "series";
String eight = "of";
String nine = "words";
int position = 0;
String sentence;
System.out.println();
}
public static String insertWord(String sentence, String word, int position)
{
String one = "A";
String two = "sentence";
String three = "is";
String four = "constructed";
String five = "with";
String six = "a";
String seven = "series";
String eight = "of";
String nine = "words";
position = 0;
sentence = one+two+three+four+five+six+seven+eight;
Scanner myScanner = new Scanner(sentence);
sentence = word + sentence;
while (myScanner.hasNext())
{
word = myScanner.next(word);
position++;
}
for (int x = 0 ; x < position ; x++)
System.out.println(sentence);
return sentence;
}
}
•
•
Join Date: Jul 2007
Posts: 53
Reputation:
Rep Power: 2
Solved Threads: 2
I decided to take the other approach with this cus I cant use the scanner class to save my life. So instead I have decided to use substring. My thought it if I separate a string in two then I can separate it anywhere along the string and insert a word and put the different parts together. So I have got my substring command but when I tested it splits the string but prints out both parts of the split string. I only want to print out the substring part I have chosen IE the part which is between the numbers I have put next to the substring.
class HomeworkSeven
{
public static void main (String [] args)
{
String word = "new";
int position = 0;
String sentence = "A sentence is constructed with a series of words";
System.out.println(insertWord(sentence,word, position));
}
public static String insertWord(String sentence, String word, int position)
{
word = "NEW".substring(0,2);
position = 0;
sentence = "A sentence is constructed with a series of words".substring(2,48);
//System.out.println(sentence);
String compound1 ="A sentence is constructed with a series of words".substring(0,14)+"New";
System.out.println(compound1);
String compound2 ="A sentence is constructed with a series of words".substring(13,47);
return sentence;
}
} Someone's in deep deep trouble. ;-)
"I don't accept change. I don't deserve to live."
"Working a real job is a win if you're lazy, greedy, or unmotivated. If you're average, you fit right in. And if you're above average, the basic terms of employment and premise of the arrangement is against your interests."
"Working a real job is a win if you're lazy, greedy, or unmotivated. If you're average, you fit right in. And if you're above average, the basic terms of employment and premise of the arrangement is against your interests."
•
•
Join Date: Jul 2007
Posts: 53
Reputation:
Rep Power: 2
Solved Threads: 2
so stupid. I know what help I can get for my homeworks. I dont know who that was who sent that. I always state if its a homework. There is a level of help you can get. So long as I am not plagerising then it is fine. I post homeworks on here for help like I get off my lecturers. I usually get a faster response on here.
•
•
Join Date: Aug 2007
Location: Adelaide, South Australia
Posts: 337
Reputation:
Rep Power: 3
Solved Threads: 39
![]() |
•
•
•
•
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
•
•
•
•
•
•
•
•
DaniWeb Java Marketplace
- Previous Thread: hotel management using Servlet
- Next Thread: number coordinates help



Linear Mode